These are chat archives for exceptionless/Discuss

20th
Oct 2015
Blake Niemyjski
@niemyjski
Oct 20 2015 12:19
morning
Blake Niemyjski
@niemyjski
Oct 20 2015 13:02
@frankebersoll I’ve updated the descriptions
I should have spent more time on that to begin with
so tired
watched tomorrowland last night
was pretty good
Blake Niemyjski
@niemyjski
Oct 20 2015 13:38
@frankebersoll I’m thinking I need to add a linter to the client
just noticed where I missed some line terminators
npm WARN deprecated gulp-karma@0.0.4: Please use Karma directly: https://github.com/karma-runner/gulp-karma
just noticed that
npm WARN deprecated gulp-karma@0.0.4: Please use Karma directly: https://github.com/karma-runner/gulp-karma
just did a clean build and got that
thinking we need that tsd command
Eric J. Smith
@ejsmith
Oct 20 2015 13:47
Morning
Blake Niemyjski
@niemyjski
Oct 20 2015 13:49
morning
@frankebersoll have you ever checked out nom-check-updates package it’s really nice
you can do ncu and ncu -g
Eric J. Smith
@ejsmith
Oct 20 2015 13:51
I've seen some TS linters
Blake Niemyjski
@niemyjski
Oct 20 2015 13:55
[TsProject] TypeScript compiler version: 1.6.2
[TsProject] Compiling Project Files...
[TsProject] src/submission/NodeSubmissionAdapter.ts(62,21): error TS2339: Property 'spawnSync' does not exist on type 'typeof "child_process"'.
[TsProject] Compiling Project Bundle: src/exceptionless-spec
[TsProject] Build completed with errors. Outputs generated.
I’m thinking our def isn’t updated at least locally
Blake Niemyjski
@niemyjski
Oct 20 2015 14:29
fixed that error
definitions needed to be updated
Blake Niemyjski
@niemyjski
Oct 20 2015 14:40
I’m ginving up for now trying to update gulp-karma to just call karma
[09:39:55] Starting Karma server...
WARN start method is deprecated since 0.13. It will be removed in 0.14. Please use
server = new Server(config, [done])
server.start()
instead.
:(
Eric J. Smith
@ejsmith
Oct 20 2015 14:41
the great transition to node 4 is upon us.
Blake Niemyjski
@niemyjski
Oct 20 2015 14:46
yeah
@frankebersoll are you around?
Blake Niemyjski
@niemyjski
Oct 20 2015 15:09
ToddThomson/tsproject#46
Blake Niemyjski
@niemyjski
Oct 20 2015 17:07
linter hooked up and committed :D
found a bug around submit event in the js client
so +1 for linting
going to grab lunch and do a quick round of testing and then release 1.1.0 unless frank has any objections
Blake Niemyjski
@niemyjski
Oct 20 2015 18:50
Just tested the node stuff.. @frankebersoll is the man…. Works so dam good...
Eric J. Smith
@ejsmith
Oct 20 2015 18:51
awesome!
Blake Niemyjski
@niemyjski
Oct 20 2015 18:51
kinda amazing
I hit control+c to kill the process and it immediately processed the queue and closed
Eric J. Smith
@ejsmith
Oct 20 2015 18:51
getting some good stuff, eh?
Blake Niemyjski
@niemyjski
Oct 20 2015 18:51
I just added the event to the browser to do the same thing :)
Eric J. Smith
@ejsmith
Oct 20 2015 18:52
nice
sounds like our JS client is getting really good,
is it processing source maps on node?
Blake Niemyjski
@niemyjski
Oct 20 2015 18:52
yeah
Eric J. Smith
@ejsmith
Oct 20 2015 18:52
nice
Blake Niemyjski
@niemyjski
Oct 20 2015 18:52
should be… the library supports it automatically
Eric J. Smith
@ejsmith
Oct 20 2015 18:53
Node with TS would be pretty cool.
Blake Niemyjski
@niemyjski
Oct 20 2015 18:53
yeah
Blake Niemyjski
@niemyjski
Oct 20 2015 19:03
Screen Shot 2015-10-20 at 2.02.37 PM.png
Looks like we can’t use that generic code… unless i normalize the headers in the browser :(
Blake Niemyjski
@niemyjski
Oct 20 2015 19:14
fixed it :)
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:15
@niemyjski ncu is great, i already had that installed
just finished my last conf call, now checking what you guys are doing
Blake Niemyjski
@niemyjski
Oct 20 2015 19:19
I have a commit incoming :)
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:19
just going through the other commits
new dependency: phantomjs?
is this for integration testing?
Blake Niemyjski
@niemyjski
Oct 20 2015 19:21
yeah
was required because we were using phantom-karma and it was indirectly using it and npm was complaining about it not being there
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:22
ah, i see
Blake Niemyjski
@niemyjski
Oct 20 2015 19:22
I just fixed the thing with headers not being picked up we were lowercasing the values instead of the header name :)
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:23
ah, dammit! that was one of those untested things at 3 AM
Blake Niemyjski
@niemyjski
Oct 20 2015 19:23
I did a quick test on require + node + browser.. not sure how to ensure our queue gets hit on the website.. seems to exit eearly think I may need to debug it more
it’ all good
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:23
i really need to create some fixture for the browser part, too.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:23
Build Exceptionless.JavaScript 1.1.199 completed
dang I need to commit something and release 200
lol
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:24
I did a quick test on require + node + browser.. not sure how to ensure our queue gets hit on the website.. seems to exit eearly think I may need to debug it more
well, how should it work in the browser?
i mean... when would you want to ensure it?
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:25
well, that's exactly the problem that https://developer.mozilla.org/de/docs/Web/API/Navigator/sendBeacon tries to solve
Blake Niemyjski
@niemyjski
Oct 20 2015 19:26
yeah
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:26
User agents will typically ignore asynchronous XMLHttpRequests made in an unload handler. To solve this problem, analytics and diagnostics code will typically make a synchronous XMLHttpRequest in an unload or beforeunload handler to submit the data. The synchronous XMLHttpRequest forces the User Agent to delay unloading the document, and makes the next navigation appear to be slower. There is nothing the next page can do to avoid this perception of poor page load performance.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:26
I’m doing it in the before unload handler
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:27
it will still be asynchronous
and if you make it synchronous (there's a boolean argument for that) it will block the navigation for this timespan
Blake Niemyjski
@niemyjski
Oct 20 2015 19:28
hmm
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:29
yes, I also brood over that some time.
we can use a polyfill for sendBeacon
i still think it should be called sendBacon.
here it is
Blake Niemyjski
@niemyjski
Oct 20 2015 19:30
crap
crap crap
hmm
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:30
you name it.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:31
just noticed we might of been doing all requests already as sync
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:31
do we?
Blake Niemyjski
@niemyjski
Oct 20 2015 19:31
hmm
true means async
and it’s optional
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:32
default is true
and, I just looked, we do xhr.open(method, url, true);
so we explicitly set the default, which is async
i mean, it shouldn't be a problem if the server is reachable, and fast. where the latter obviously is not our problem ;-)
but hey, everywhere they say it's bad practice.
so i didn't touch it :-) of course it would be nice. but as you said, it's crap.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:34
what do you mean
bad practice
to do it sync?
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:35
blocking ajax on navigate
Blake Niemyjski
@niemyjski
Oct 20 2015 19:35
ah I meant crap as in I thought we were telling it to do sync for every request in everyones browser
lol
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:35
blocking ajax in general.
no, we put 'true' there which seems to be the default anyways.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:35
well blocking on navigate yeah.. can see how that would be an issue but we kinda want this to be submitted
yeah
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:36
yes, the developer wants it to be submitted. but the user wants to navigate away as fast as possible. i guess. i don't know for sure
Blake Niemyjski
@niemyjski
Oct 20 2015 19:36
so can you think we should never do a sync call on the beforeunload event?
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:37
i didn't test it. can we put a timeout somewhere?
Synchronous AJAX (Really SJAX -- Synchronous Javascript and XML) is modal which means that javascript will stop processing your program until a result has been obtained from the server. While the request is processing, the browser is effectively frozen. The browser treats the call like an alert box or a prompt box only it doesn't wait for input from the user, but on input by the remote server. 99.99% of the time the the response is quick and fast enough so that there isn't any problems. If anything goes wrong in the request and/or the transfer of the file, however, the user's browser may freeze for over two minutes until the request times out.
Eric J. Smith
@ejsmith
Oct 20 2015 19:39
agreed, we should never block the end user.
that would probably be considered a big no no.
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:41
in some cases it can make the browser look frozen. I would say okay if we can put a timeout there, maybe 0.2 seconds or so, but I haven't found reliable sources that this is supported.
on the other hand, sendBeacon is supported in chrome, firefox and opera. at least something.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:42
code: 15
message: "Failed to set the 'timeout' property on 'XMLHttpRequest': Timeouts cannot be set for synchronous requests made from a document."
\
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:43
ah, there it is.
it has a built-in "don't ever use me"
in comparison, that was easy in Node.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:44
well I was setting a timeout property
so general consensus is don’t do this..
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:44
yes, i guessed so.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:44
I can get it to work but it might freeze the browser which I can test
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:45
so, I would go for a combination of a) sendBeacon when available, and b) local storage
but that would, as already discussed, require some message ID and server-side deduplication, because of we never get to know if sendBeacon actually worked, so we would always resend the queue from local storage.
Blake Niemyjski
@niemyjski
Oct 20 2015 19:46
but for send becon
do we treat it that it’s already been sent?
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:47
?
we will never know, so we will have to treat it as if "we tried".
so the next big thing will be local storage, I guess.
oh. var gets let all over the place
was there some kind of auto-fix using the linter?
Blake Niemyjski
@niemyjski
Oct 20 2015 19:50
yeah
called blake :D
prob should enable whitespace linting on types but I didn’t feel like updating all of those and I’m lazy
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:52
there has to be some tool for that! at least, i... can Roslyn do that? does Roslyn typescript?
Blake Niemyjski
@niemyjski
Oct 20 2015 19:52
so I have syncronous sending turned on
didn’t notice any big lag
let me try with no server
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:52
wait, the typescript module itself knows typescript. i look into that
Blake Niemyjski
@niemyjski
Oct 20 2015 19:52
so I set it to an invalid server url
and the tab closed right away
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:53
okay. what about a valid server url with a not responding server?
Blake Niemyjski
@niemyjski
Oct 20 2015 19:53
code: 19
message: "Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost:50000/api/v2/events?access_token=8tFb5nSe20p82gRCETF91uL0SzevhvfdQM3Ce5Jz'."
name: "NetworkError"
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:54
something that doesn't immediately fail?
Blake Niemyjski
@niemyjski
Oct 20 2015 19:54
yeah
but how reliable is this
probably would have to try every browser combo
so prob should just revert it
guess I’ll comment it out
Frank Ebersoll
@frankebersoll
Oct 20 2015 19:59
i looked into your commits and everything else looks really 1.1.0
Blake Niemyjski
@niemyjski
Oct 20 2015 20:05
cool
I just made one last commit
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:07
okay. i will merge it into my additionalInfo branch then
Blake Niemyjski
@niemyjski
Oct 20 2015 20:08
what’s going on in that branch?
Are you fine with me pushing a 1.1?
or did you want to get something else into this
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:09
not very much, just collecting all the currently loaded modules in Node
that fixes your one issue about not having those modules submitted
Blake Niemyjski
@niemyjski
Oct 20 2015 20:10
YEAH
yeah*
does it just need testing?
if so I can help test it
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:10
ehm, I did a... smoke test?
it didn't smoke a lot.
Blake Niemyjski
@niemyjski
Oct 20 2015 20:11
lol
want to merge it
I’ll test it quick
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:12
what it does is a comparison between what is in the node_modules subfolder and what is loaded in require.cache
Blake Niemyjski
@niemyjski
Oct 20 2015 20:12
I’ll smoke it too :D
which user in this room feels like testing it in prod :D
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:12
couldn't think of another way to get what we have in .NET
Blake Niemyjski
@niemyjski
Oct 20 2015 20:12
yeah.. neither could I
so that’s why I didn’t even do it
I think if you have any module info is better than none
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:13
okay. i put some exception handling in it, so, in the worst case, at least it will be exceptionless
hopefully so.
Blake Niemyjski
@niemyjski
Oct 20 2015 20:14
or if you want that can wait for 1.1.1 not in any hurry
it’s your call
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:14
now that we're into it, why don't make it happen?
but i'm not in a hurry either. I just build my own package if i need it for testing.
Blake Niemyjski
@niemyjski
Oct 20 2015 20:16
sure
I’ll work on the change log
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:16
okay. what I also noticed is that I didn't update the wiki
Blake Niemyjski
@niemyjski
Oct 20 2015 20:16
if you want me to pair on it with you let me know or let me know when you merge and I’ll run it against our express sample
anything I can do in the wiki
?
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:17
well, the updates I did in README.md didn't go there.
95fc9036
but I can also review that.
noticed it just yesterday.
Blake Niemyjski
@niemyjski
Oct 20 2015 20:22
hmm
that’s odd
@frankebersoll and @srijken contributed a lot to this release :).
Think I need to look into doing something special for you guys :)
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:31
i think you're exaggerating a little.
incremental build for tsproject would be cool
Blake Niemyjski
@niemyjski
Oct 20 2015 20:34
yeah
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:34
won't happen any time soon
Blake Niemyjski
@niemyjski
Oct 20 2015 20:34
would be cool. This is the first release of the js client where I didn’t do a majority of the work :) Feels great
Welcome @srijken as a contributor as well :)
I’m waiting for ts 1.7 with the bundling
wish we could use the async and await but have to support ie9 :(
Sander Rijken
@srijken
Oct 20 2015 20:36
doesn’t that compile back to promises?
and thanks :)
Eric J. Smith
@ejsmith
Oct 20 2015 20:37
yeah, I think it has a polyfill for generators to support IE9.
Sander Rijken
@srijken
Oct 20 2015 20:39
babel and traceur compile async/await js to promises
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:40
do they also support bundling, as tsproject does?
Blake Niemyjski
@niemyjski
Oct 20 2015 20:40
yeah, we didn’t want to use promises due to the size of the polyfil is 20k
Frank Ebersoll
@frankebersoll
Oct 20 2015 20:40
ah
Blake Niemyjski
@niemyjski
Oct 20 2015 20:40
@frankebersoll I sure hope so
Sander Rijken
@srijken
Oct 20 2015 20:41
tsproject compiles ts to js, I think you’ll have to do babel or traceur after that, but I never tried in combination with typescript
you need a polyfill for promises?
Blake Niemyjski
@niemyjski
Oct 20 2015 20:42
I think babel can take the typescript docs and do everything in one step
Sander Rijken
@srijken
Oct 20 2015 20:45
uh? I’m quite sure babel only understands js?
it transpiles es6/es7 to es uh lower
Blake Niemyjski
@niemyjski
Oct 20 2015 20:46
yeah
guess you have to do it via 2 steps
I thought they added support to bable to use typecscript as a primary source
Blake Niemyjski
@niemyjski
Oct 20 2015 20:55

exceptionless/Exceptionless.Net#62
@ejsmith wonder why we haven’t saw that one before
Blake Niemyjski
@niemyjski
Oct 20 2015 21:12
@frankebersoll noticed a console.log in the getmodules method
other than that looks great :)
I never thought of doing a child process that does npm list
clevor
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:13
Yes, commit already in the making. I can also undo that appveyor tsd thing
Blake Niemyjski
@niemyjski
Oct 20 2015 21:14
clevor
clever* jesus I can’t spell
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:14
I did some performance tests, and even on my synology it happened real quick even with lots of installed modules
And it's getting cached, so it should block the app only on the first exception
Blake Niemyjski
@niemyjski
Oct 20 2015 21:15
yeah that will be good
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:15
An alternative would be to... wait.
Blake Niemyjski
@niemyjski
Oct 20 2015 21:15
bbiab going to get my cloths out of the washer.
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:15
I will change that.
Blake Niemyjski
@niemyjski
Oct 20 2015 21:15
ok
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:17
Two possibilities: Either leave it as is, so it will block the application shortly on the first exception, probably unnoticeable.
Or, always call npm list in the background on app start, and use the result if it's there. And if it hasn't returned yet, call it synchronously, or just log without modules.
But then, in the rather common use case where the app fails due to environment or configuration problems right after startup, we will have two calls to npm list going, because the asynchronous call won't finish in time.
The current implementation is much easier.
Getting Exceptionless clients right is all about race conditions, as it seems.
At least in regard to javascript.
Chris Proud
@chrisproud
Oct 20 2015 21:25
hi chaps - just trying to repo exceptionless/Exceptionless.Net#62 but its not easy. We've had a few floods of exceptions (404's) this afternoon so i'm trying to do the same on app start to see if I can replicate.
Blake Niemyjski
@niemyjski
Oct 20 2015 21:26
hey
@frankebersoll yeah, I think the current method will work good
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:27
ok
Blake Niemyjski
@niemyjski
Oct 20 2015 21:27
@chrisproud what operating system, version of the client, and asp.net are you using
you could use apache bench to try and reproduce. we have the script in the root of our repo
just update the stress.ps1 and have it point to a 404
I guess I could do the same
Chris Proud
@chrisproud
Oct 20 2015 21:30
production is windows 2012r2, dotnet 4.5
3.1.1405
Blake Niemyjski
@niemyjski
Oct 20 2015 21:33
we have a newer client out but I just looked over the commit log and I don’t see anything that would change this behavior
how many threads were on the same call stack?
was this on azure?
what client are you using? web, mvc or webapi or a combination
Chris Proud
@chrisproud
Oct 20 2015 21:34
I did the same and could see any relevant commits either.
Blake Niemyjski
@niemyjski
Oct 20 2015 21:34
just asking so I can try to reproduce
Chris Proud
@chrisproud
Oct 20 2015 21:34
no - hosted on our own kit (VM)
Blake Niemyjski
@niemyjski
Oct 20 2015 21:34
ok
Chris Proud
@chrisproud
Oct 20 2015 21:35
using exceptionless.web
Blake Niemyjski
@niemyjski
Oct 20 2015 21:35
I’m guessing your running exceptionless.web or mvc from that call stack you psoted
ok
I’m going to start up our web sample and pound the daylights out of it with 404’s
Chris Proud
@chrisproud
Oct 20 2015 21:36
i've been trying the same with jmeter on my pc
although I have dotnet 4.6 on win 10 I'm not been fair
Blake Niemyjski
@niemyjski
Oct 20 2015 21:37
same
running 10 and 4.6
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:38
i feel like I'm stealing your time a little already, but I would really appreciate if you could explain to me why we need that tsdin the appveyor.yml. Let me explain what I understand:
  1. appveyor calls that install script and executes one command at a time.
  2. It eventually gets to the line npm install
  3. npm installs all node packages as defined in package.json, and also calls the prepublish script, as this is always called when doing npm install, according to npm documentation
  4. The prepublish script executes tsd reinstall -s
  5. appveyor.yml continues with the next command, effectively calling tsd reinstall -s again. So we call tsd reinstall -s twice. Don't we?
Chris Proud
@chrisproud
Oct 20 2015 21:38
i'm I'm feeling brave I could try on a warm spare I have in production tomorrow evening
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:39
I feel a little dumb about that :-)
Blake Niemyjski
@niemyjski
Oct 20 2015 21:40
@frankebersoll you’re not stealing my time.. I appreciate your time..
you are right and I’m wrong.. shouldn’t be in the appveyor file
I’m not 100% sure where prepublish runs tho
which is why I think i had it in both
lets remove it :)
@chrisproud if you want I can meet up with you then and look into it on the prod server. if you give me a few I should have the results of the apache locally
how many of the 46 threads were dead locked on that code path?
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:42
i can assure you that it runs on npm install - I know that because I really, really wondered how this tsd is ever being called, and it took me some time and reading the npm docs to find that out, finally.
Blake Niemyjski
@niemyjski
Oct 20 2015 21:43
okay
sounds good to me
:)
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:43
Okay :-)
Blake Niemyjski
@niemyjski
Oct 20 2015 21:43
if the build fails we will know that is the reason
learned a few things today
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:44
that's what initially made me investigate this - I wondered why the build worked locally, where I never called tsd :-)
Blake Niemyjski
@niemyjski
Oct 20 2015 21:45
@chrisproud any idea what exception is being thrown on startup
Frank Ebersoll
@frankebersoll
Oct 20 2015 21:46
@niemyjski what kinds of linting rules didn't you enable but would be nice to have?
Blake Niemyjski
@niemyjski
Oct 20 2015 21:48
there was a whitespace ones.. I don’t remember but I went to that website (tslint) and just pasted theirs in there
was one for proper spacing around types
i disabled some like I like having types defined around inferred types because if you change it you get an error
Chris Proud
@chrisproud
Oct 20 2015 21:49
I'm not an expert at reading these dmp file analysis, but it doesn't look like anything is deadlocked. I just have a ton of threads enumerating this dictionary. GC has also kicked in
Blake Niemyjski
@niemyjski
Oct 20 2015 21:49
@chrisproud if you want I can look at it with you
I’m no expert but maybe we can figure out some thing more
I’m running the stress tool but it’s not even throwing 404’s
ahh cause I didn’t have the right extension for the managed pipeline lol
Chris Proud
@chrisproud
Oct 20 2015 21:52
just going to say - my 404 was requesting a .ashx file
Blake Niemyjski
@niemyjski
Oct 20 2015 21:53
I’m not seeing it on my end
not saying there isn’t a race condition
just submitted 2k events while our web sample was starting up
did 500 for each app startup
guess we could try adding a test that calls parallel.for and does a submit
to see if it deadlocks
I’ll try that quick give me a few minutes
Chris Proud
@chrisproud
Oct 20 2015 21:54
i tried 300 concurrent requests and couldn't replicate it!
We were only getting a peak of 50 404's per second around when this happened.
Blake Niemyjski
@niemyjski
Oct 20 2015 22:01
@chrisproud
    [Fact]
    public void EnvironmentInfo_CanRunInParallel() {
        var client = new ExceptionlessClient();
        var ev = new Event { Type = Event.KnownTypes.SessionStart };
        var plugin = new EnvironmentInfoPlugin();

        Parallel.For(0, 10000, i => {
            var context = new EventPluginContext(client, ev);
            plugin.Run(context);
            Assert.Equal(1, context.Event.Data.Count);
            Assert.NotNull(context.Event.Data[Event.KnownDataKeys.EnvironmentInfo]);
        });
    }
Just ran that in a unit test where it’s calling that plugin that was failing in your stack trace and nothing
quad core machines so it should have ran a bunch of those in parallel
could try different threads.
@chrisproud I’d enable logging and log to a file on disk and you can see what exceptions are being thrown
then you can always disable exceptionless by doing enabled=false in your web.config so you don’t need to recompile
if you want I can meet up and do this with you
Chris Proud
@chrisproud
Oct 20 2015 22:03
yeah - that should kill it if there was a problem. I'll have a go with our hot spare tommorow with logging enabled
Blake Niemyjski
@niemyjski
Oct 20 2015 22:03
I’d like to know what’s going on. we haven’t had any reports but not ruling it’s not happening for others
keep me updated. I’ll think about this in the back of my head and see if I can think of anything. that link you pointed to sounded spot on..
does this only happen on one of your servers? If so what is different?
Chris Proud
@chrisproud
Oct 20 2015 22:05
first time it has happened for us. only happened on one of our servers, but they will restart app pools at different times
I should be able to send you the dump analysis if you want to see it. Have you got a private space I can send it?
Blake Niemyjski
@niemyjski
Oct 20 2015 22:06
hmm
I could set one up unless you want to add me on skype and you can send it there
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:06
@niemyjski your unit test uses Parallel.For, and MSDN says that "By default, For and ForEach will utilize however many threads the underlying scheduler provides, so changing MaxDegreeOfParallelism from the default only limits how many concurrent tasks will be used."
so, it should fully use the Thread Pool.
did you test in Release mode, with optimizations?
Blake Niemyjski
@niemyjski
Oct 20 2015 22:07
yeah, I’ve just seen cases where you had to do task.startnew inside of a parallel foreach just to try and get races to happen
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:07
I found that many threading problems only occur in a real application, even .vshost process prevents some of them
Blake Niemyjski
@niemyjski
Oct 20 2015 22:07
no I didn’t try in release mode
but wonder if it’s something in 4.6 with the new ryujit causing us not to see it
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:08
I would even try it in a console app and then start it outside of VS
Blake Niemyjski
@niemyjski
Oct 20 2015 22:08
@chrisproud can you try disabling the ryujit locally?
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:08
and maybe with 4.5.1
Blake Niemyjski
@niemyjski
Oct 20 2015 22:09
will think on this one while I’m at the gym
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:10
and I'm out for today. have fun!
Blake Niemyjski
@niemyjski
Oct 20 2015 22:10
@chrisproud what was the cpu load on the box when this happened? Was it really really high?
Chris Proud
@chrisproud
Oct 20 2015 22:10
I need to head off now - i'll try and get that file over to you tomorrow and see if I can replicate on our warm spare. B back in touch tomorrow
Blake Niemyjski
@niemyjski
Oct 20 2015 22:10
@frankebersoll should I deploy it?
@chrisproud sounds good
@frankebersoll later
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:11
my feature branch?
Chris Proud
@chrisproud
Oct 20 2015 22:11
nailed at 100%, the box was really bad - took forever to log in and get task manager up
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:11
i'd like to this other "additional exception info" issue in there. i think it will be 1.1.1 or so
ok?
  • put
  • put
time for bed.
Blake Niemyjski
@niemyjski
Oct 20 2015 22:13
@chrisproud k, was it just the w3wp process pegged at 100% cpu?
ok
lets do that :)
have a good night!
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:13
thanks! see you.
Frank Ebersoll
@frankebersoll
Oct 20 2015 22:15
teh shit.
okay, I'm out :-)
Blake Niemyjski
@niemyjski
Oct 20 2015 22:16
lol
later
Eric J. Smith
@ejsmith
Oct 20 2015 23:17
I don’t like our AsyncEvent having to be settable in our models.
Blake Niemyjski
@niemyjski
Oct 20 2015 23:19
What do you mean
You want to subscribe only?
Working out
Eric J. Smith
@ejsmith
Oct 20 2015 23:20
no I mean that the event properties are settable.