These are chat archives for exceptionless/Discuss

21st
Jan 2016
Frank Ebersoll
@frankebersoll
Jan 21 2016 15:26
hey there
is there an easy way to show the raw event data from the UI?
this would be helpful for debugging things
Blake Niemyjski
@niemyjski
Jan 21 2016 15:27
The whole event?
You can already trigger the raw json for extended data
Frank Ebersoll
@frankebersoll
Jan 21 2016 15:30
yes, the whole event. we could see the nested exceptions there
probably i can get there via the API already, but that requires some additional steps (authentication)
Blake Niemyjski
@niemyjski
Jan 21 2016 15:33
Yeah or f12 tools
Frank Ebersoll
@frankebersoll
Jan 21 2016 15:33
okay :-)
i didn't think about that.
Blake Niemyjski
@niemyjski
Jan 21 2016 15:33
Guess we could add a hotkey to show a modal with it
Frank Ebersoll
@frankebersoll
Jan 21 2016 15:33
that would be nuts.
Blake Niemyjski
@niemyjski
Jan 21 2016 15:36
You think?
Can't tell if excited or sarcasm
Eric J. Smith
@ejsmith
Jan 21 2016 15:37
I want to be able to see the entire raw JSON as well.
Blake Niemyjski
@niemyjski
Jan 21 2016 15:53
where do you think a good place to trigger it
like a view raw
button or would it just be a hot key that hardly anyone knows about
I even forgot how to trigger the help ui
thats probably not good
Frank Ebersoll
@frankebersoll
Jan 21 2016 15:55
i would have looked for it in the dropdown
Blake Niemyjski
@niemyjski
Jan 21 2016 15:55
what dropdown?
event page doesn’t have any
Frank Ebersoll
@frankebersoll
Jan 21 2016 15:55
oh. there is none. i see.
Blake Niemyjski
@niemyjski
Jan 21 2016 15:56
maybe add a keyboard shortcuts overview menu there on your profile picture
Eric J. Smith
@ejsmith
Jan 21 2016 15:56
well there are buttons at the top and bottom of the page.
maybe just put a {} button at the top
maybe that one
even though it’s really html
looking for a better one
Blake Niemyjski
@niemyjski
Jan 21 2016 16:00
you mean next to the stack navigation
Eric J. Smith
@ejsmith
Jan 21 2016 16:00
yes
Blake Niemyjski
@niemyjski
Jan 21 2016 16:00
is this something you want me to do now?
I think I could do it in like an hour or less
or do you want me to focus on adding ip from the event post info to the pipeline context
Eric J. Smith
@ejsmith
Jan 21 2016 16:01
don’t even know what that means.
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:02
it seems to be a client issue!
F12 shows the event as it is shown in the UI
Blake Niemyjski
@niemyjski
Jan 21 2016 16:03
Some events like javascript don’t have the client ip address but we can get it from the request object and we put it on the EventPostInfo.. Then we do nothing with it
@frankebersoll can you add a unit test and assert whats missing.
From what I looked at yesterday it looked as though it was 1 to 1
I looked at it twice
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:04
i just looked again, right in ClientOnSubmittedEvent
and its there! but on the server, it isn't.
Eric J. Smith
@ejsmith
Jan 21 2016 16:04
the .net client sends the request info and environent info that have both the machine IP and the client IP. So I am assuming that you are talking about adding it to the JS client? Which I think would be great.
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:04
this is really strange. a stackframe gets lost.
Eric J. Smith
@ejsmith
Jan 21 2016 16:04
but it should be all the request info
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:05
i try a wrapper around our submission client.
and look at the data that is being sent
Blake Niemyjski
@niemyjski
Jan 21 2016 16:05
@ejsmith this ip is the external network ip that submitted it.. which could be different from the .NET clients and is really hard to get from the JS Clients
@frankebersoll could just look in fiddler
question is what would we do with this ip
might be valuable for calculating the location info
and might be good to have as extended data on the event
Eric J. Smith
@ejsmith
Jan 21 2016 16:09
dig into what raygun is doing.
they are sending info from js
Blake Niemyjski
@niemyjski
Jan 21 2016 16:10
you can’t get the ip address from within js
Eric J. Smith
@ejsmith
Jan 21 2016 16:10
hrmm… just thought of something… the js client sends requests from the users machine.
you grab it on the server side.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:10
without doing a web request to a third party service to get it
yes
so I’m thinking that if it’s a js client (from the user agent) we could put this ip in the machine info that we calculate
Eric J. Smith
@ejsmith
Jan 21 2016 16:11
I don’t think it makes any sense to put it in the environment info.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:11
or add it as extended data to the environment info or put it someplace if that doesn’t exist and then fallback to that when calculating location
Eric J. Smith
@ejsmith
Jan 21 2016 16:11
that is server level info.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:11
it does for browser
yeah
Eric J. Smith
@ejsmith
Jan 21 2016 16:11
we don’t have any of that data.
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:11
okay - the serialization is broken
Eric J. Smith
@ejsmith
Jan 21 2016 16:11
but we do have request level info.
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:12
json doesn't contain stack information for the innermost exception :-|
Blake Niemyjski
@niemyjski
Jan 21 2016 16:12
Is there even stack trace for the innermost on the client
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:12
yes, in the raw event data, it's there.
i can drill into it using intellisense, and it's all there.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:13
@ejsmith exceptionless/Exceptionless#178 lets update this to do exactly what we need and I can work on that quickly
Frank Ebersoll
@frankebersoll
Jan 21 2016 16:14
@niemyjski i will investigate
Blake Niemyjski
@niemyjski
Jan 21 2016 16:14
ok, please keep me updated
Eric J. Smith
@ejsmith
Jan 21 2016 16:15
if we create the requestinfo from the client side with things like cookies, url, browser window size, query string parameters, user agent, user language, referrer
then on the server side we add the IP address to it.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:16
in js clients we only ever send environment info
nevermind my bad
we do send request info
so guess the goal is to always append the server side client ip address to the request info client ip address list
append or set it
Eric J. Smith
@ejsmith
Jan 21 2016 16:18
yes
Blake Niemyjski
@niemyjski
Jan 21 2016 16:18
okay
Eric J. Smith
@ejsmith
Jan 21 2016 16:18
and send as much request info as we can.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:19
yes, we do send as much as we can except for screen size right now
Eric J. Smith
@ejsmith
Jan 21 2016 16:19
all these: cookies, url, browser window size, query string parameters, user agent, user language, referrer
except size?
Blake Niemyjski
@niemyjski
Jan 21 2016 16:19
let requestInfo: IRequestInfo = {
user_agent: navigator.userAgent,
is_secure: location.protocol === 'https:',
host: location.hostname,
port: location.port && location.port !== '' ? parseInt(location.port, 10) : 80,
path: location.pathname,
// client_ip_address: 'TODO',
cookies: Utils.getCookies(document.cookie, exclusions),
query_string: Utils.parseQueryString(location.search.substring(1), exclusions)
};
that’s what we send right now
Eric J. Smith
@ejsmith
Jan 21 2016 16:20
so we just need to add referrer, view port size, and language
Blake Niemyjski
@niemyjski
Jan 21 2016 16:20
okay
any preference on key names for the later
Eric J. Smith
@ejsmith
Jan 21 2016 16:21
view port size is really useful
Blake Niemyjski
@niemyjski
Jan 21 2016 16:21
I’ll create a js issue for this
Eric J. Smith
@ejsmith
Jan 21 2016 16:21
language can definitely be useful
and referrer is useful
so I think we should add those.
Blake Niemyjski
@niemyjski
Jan 21 2016 16:21
what about current page url
Eric J. Smith
@ejsmith
Jan 21 2016 16:21
then add client IP from the server
Blake Niemyjski
@niemyjski
Jan 21 2016 16:21
ok
Eric J. Smith
@ejsmith
Jan 21 2016 16:21
you already have that, right?
Blake Niemyjski
@niemyjski
Jan 21 2016 16:22
exceptionless/Exceptionless#178
yes
I don’t see where it’s being set
Eric J. Smith
@ejsmith
Jan 21 2016 16:22
host: location.hostname,
port: location.port && location.port !== '' ? parseInt(location.port, 10) : 80,
path: location.pathname,
Blake Niemyjski
@niemyjski
Jan 21 2016 16:22
what should we do if request info doesn’t already exist
yeah we do have that my bad… need my coffee
Blake Niemyjski
@niemyjski
Jan 21 2016 16:58
Blake Niemyjski
@niemyjski
Jan 21 2016 18:50
Sigh looking into this more and it seems like it could be useful to pass the event post info into the pipeline
because we could do conditional stuff based on user agent as well as have a plugin that updates request info
Eric J. Smith
@ejsmith
Jan 21 2016 19:20
I think it is.
Blake Niemyjski
@niemyjski
Jan 21 2016 19:26
nope
we only pass in the events into the pipeline
Eric J. Smith
@ejsmith
Jan 21 2016 19:28
yeah, guess we could add that to the context.
in case we want to do anything with it.
like this.
Blake Niemyjski
@niemyjski
Jan 21 2016 19:40
yeah
guess it’s an optional override to eventpipeline.run
Eric J. Smith
@ejsmith
Jan 21 2016 19:41
yeah, I guess so… wouldn’t it always have it though?
do we run the pipeline any other way?
Blake Niemyjski
@niemyjski
Jan 21 2016 19:42
well unit tests wouldn’t havei t
we parse the events out side of it and pass them in
Eric J. Smith
@ejsmith
Jan 21 2016 19:43
yeah, I guess it can be optional.
Blake Niemyjski
@niemyjski
Jan 21 2016 19:43
I’ll do it in a pull request so we can evaluate it
Eric J. Smith
@ejsmith
Jan 21 2016 19:43
ok
Blake Niemyjski
@niemyjski
Jan 21 2016 20:15
Just got some feedback on session events tab, they’d like to see a stack view as well as a break down of different event types
Eric J. Smith
@ejsmith
Jan 21 2016 20:16
stack view of what?
Blake Niemyjski
@niemyjski
Jan 21 2016 20:18
of the events that occurred during the session
so if you have 50 of the same exception they woudl be stacked
Eric J. Smith
@ejsmith
Jan 21 2016 20:18
wtf
Blake Niemyjski
@niemyjski
Jan 21 2016 20:18
not sure what kind of value that would add
as I want to see historically what happened in that session
Eric J. Smith
@ejsmith
Jan 21 2016 20:18
so 1 session and they want the events stacked inside of the single session?
Blake Niemyjski
@niemyjski
Jan 21 2016 20:18
yep
just some feedback
Eric J. Smith
@ejsmith
Jan 21 2016 20:19
I don’t agree think I agree with that.
Seems pretty crazy that you have so many of the same error happening in a single session.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:19
I just figure I’d bring there feedback up
well, we’ve had one guy have a javascript error reported 50,000 times
Eric J. Smith
@ejsmith
Jan 21 2016 20:19
and if you want to see the stacks then you can view them directly… sessions are just meant so you can see the timeline of events.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:19
and that would have been in one session
so I can see why they’d want it but I don’t think it makes sense for 99% of sessions
yeah
Eric J. Smith
@ejsmith
Jan 21 2016 20:20
they can still see the stacks.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:20
yeah
they could go to the dashboard and filter by that session
Eric J. Smith
@ejsmith
Jan 21 2016 20:20
and I think the fact that they got 50k of the same thing is an issue all by itself.
that is what we need to fix.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:20
yeah
Eric J. Smith
@ejsmith
Jan 21 2016 20:20
it adds zero value for us to be collecting every single one of those.
yeah, exactly… just filter by the session id and they can see the stacks.
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:22
setting up an azure VM so i can investigate that inner stack thing
Eric J. Smith
@ejsmith
Jan 21 2016 20:22
thinking it is azure specific?
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:22
we’re still on 2013 at work :-(
thinking it’s the serialization
Eric J. Smith
@ejsmith
Jan 21 2016 20:22
oh, you can run the VS project locally.
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:23
?
Eric J. Smith
@ejsmith
Jan 21 2016 20:23
Your saying that you don’t have VS2015 locally and that is why you are doing an Azure VM.
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:23
at home and only on mac without parallels
that’s why i’m doing mainly the JS stuff...
at work, i’m all .NET
Eric J. Smith
@ejsmith
Jan 21 2016 20:25
gotcha
well, hopefully someday we can have a simple editor like VS Code and you can just use that on OS X. :-)
as soon as that is viable, we are going to make it happen.
Sander Rijken
@srijken
Jan 21 2016 20:26
seems like every day that I’m too busy to look at the de-duping has an event that really need de-duping :)
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:26
in german we have the saying „to run in open doors"
Eric J. Smith
@ejsmith
Jan 21 2016 20:27
@srijken yesh!
yeah!
@frankebersoll what does it mean?
Sander Rijken
@srijken
Jan 21 2016 20:27
5k events in 2 hours where the first 20 visible are within the same second.. :(
Eric J. Smith
@ejsmith
Jan 21 2016 20:27
yeah, that really sucks.
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:27
to agree with someone where no convincing is necessary
Blake Niemyjski
@niemyjski
Jan 21 2016 20:28
dang
Eric J. Smith
@ejsmith
Jan 21 2016 20:28
adds zero value and eats up your plan and costs us hosting money too.
@frankebersoll ahh! I like it. :-)
Sander Rijken
@srijken
Jan 21 2016 20:28
nobody benefits in the end
Eric J. Smith
@ejsmith
Jan 21 2016 20:28
nope
Blake Niemyjski
@niemyjski
Jan 21 2016 20:28
comma comma to run in open doors :D
I like it
:D
Sander Rijken
@srijken
Jan 21 2016 20:28
@frankebersoll “kick in open doors” in dutch :)
but that’s more like stating the obvious
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:29
better translation
Blake Niemyjski
@niemyjski
Jan 21 2016 20:29
in america there always needs convincing just ask eric :D
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:29
i had another de-duping problem at work.. we’re using multiple app domains, and every appdomain calls client.Register()
Blake Niemyjski
@niemyjski
Jan 21 2016 20:29
ah that put the first smile on my face all day, thank you for that
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:30
now any unhandled exception in the child app domain gets handled by the handlers in both appdomains.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:30
hmm
those should be seperated out
I didn’t think it would bubble through both app domains
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:30
it’s not a very common case
Blake Niemyjski
@niemyjski
Jan 21 2016 20:31
we do that in our generator project
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:31
it doesn’t bubble, but the AppDomain.UnhandledException event is raised in both domains
Blake Niemyjski
@niemyjski
Jan 21 2016 20:31
we generate code in a separate domain so we can unload it and free up assembly references
hmm
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:31
shortly after, the application will exit.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:31
but it should be wired to the event handler on one of hthem
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:32
my idea: an additional plugin that sets a special key on the exception.Data dictionary
and if this flag is there, just ignore it
so the first handler logs it, the second doesn't
Blake Niemyjski
@niemyjski
Jan 21 2016 20:33
but that’s where our deduping should handle it
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:33
will add this to our core, but i don’t think it will add much value to the client itself
Sander Rijken
@srijken
Jan 21 2016 20:33
agreed, deduping should/will fix this
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:33
it doesn’t, because there’s another problem :-) the second handler doesn’t serialize the exception at all
i only get the message, not the stack.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:34
that seems like a bug with .net
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:34
i will add all those things to some tests, as soon as i got the VM up and running
Blake Niemyjski
@niemyjski
Jan 21 2016 20:34
have you logged this on the github repo
ok
seems like a bug with the runtime
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:36
i promise to keep my eyes on these things, my colleagues are quite ambitious about getting everything together
Blake Niemyjski
@niemyjski
Jan 21 2016 20:41
ok
we have a few outstanding issues that you guys have reported that I need to make sure we handle sooner than later
feel bad about them being outstanding
like deduplicating, aggregate exceptions things like that
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:44
i have seen worse software.
Blake Niemyjski
@niemyjski
Jan 21 2016 20:45
yeah I have too, still not an excuse for me.
I’d would of been pissed if I ran into that, logged it and it wasn’t handled in a timely manner
just saying of behalf of myself not anything you guys have done.
Eric J. Smith
@ejsmith
Jan 21 2016 20:48
I’d say we are doing pretty darn good for a couple people building an app this big. :-)
Blake Niemyjski
@niemyjski
Jan 21 2016 20:48
it’s my job and anything you guys do to help is greatly appreciated and awesome but at the end of the day its on me :)
yeah
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:50
still, i don’t think it’s time for self-castigation ;-)
Blake Niemyjski
@niemyjski
Jan 21 2016 20:50
haha
Eric J. Smith
@ejsmith
Jan 21 2016 20:51
look at this guy breaking out the dictionary on us.
Frank Ebersoll
@frankebersoll
Jan 21 2016 20:59
why am I missing System.Web after cloning?
Blake Niemyjski
@niemyjski
Jan 21 2016 20:59
ah
you mean from a brand new os?
Frank Ebersoll
@frankebersoll
Jan 21 2016 21:00
System.Web.Http and System.Net.Http.Formatting are missing. yes.
Blake Niemyjski
@niemyjski
Jan 21 2016 21:00
might have to install mvc3 or mvc4
Frank Ebersoll
@frankebersoll
Jan 21 2016 21:00
ah!
okay.
Blake Niemyjski
@niemyjski
Jan 21 2016 21:00
we should just drop support for those
it’s 2016
not 2010
Frank Ebersoll
@frankebersoll
Jan 21 2016 21:04
i just unload them
Blake Niemyjski
@niemyjski
Jan 21 2016 21:04
wondering how smart I should be about setting this dang ip address
if your local host your ip could be ::1 or 127.0.0.1
do we care if you submitted with ::1 and your client ip address contains 127.0.0.1 for some reason
guess it would kinda suck to put both in there
Blake Niemyjski
@niemyjski
Jan 21 2016 21:12
wondering if it’s even worth setting if it’s local host
Sander Rijken
@srijken
Jan 21 2016 21:57
@niemyjski not syncing the stacktrace across appdomains isn't a bug. I think there's even a way to fix it by calling a method on the exception before it passes the appdomain boundary
you guys have been doing this since (at least) 2005?
Eric J. Smith
@ejsmith
Jan 21 2016 22:01
I started CodeSmith Tools in 2004 I believe.
pretty crazy to think how long it’s been.
Blake Niemyjski
@niemyjski
Jan 21 2016 22:01
yeah
Eric J. Smith
@ejsmith
Jan 21 2016 22:03
I’ve been getting Niemyjskified™ since 2008.
Sander Rijken
@srijken
Jan 21 2016 22:03
I was looking for the method you can call to do that, and I found a codeproject article pointing to exceptionless.com :)
Eric J. Smith
@ejsmith
Jan 21 2016 22:04
there are some really old articles on codeproject for CodeSmith Generator.
Blake Niemyjski
@niemyjski
Jan 21 2016 22:06
internal
Sander Rijken
@srijken
Jan 21 2016 22:06
yeah
different use case maybe, but I think it’s related behavior
Blake Niemyjski
@niemyjski
Jan 21 2016 22:07
that’s ugly
Sander Rijken
@srijken
Jan 21 2016 22:07
absolutely
Blake Niemyjski
@niemyjski
Jan 21 2016 22:07
but I guess solves the problem
Sander Rijken
@srijken
Jan 21 2016 22:08
and it’s probably also relatively slow
I’m not suggesting you do this (yet).. let’s first have a test case and see if there’s a better way
Frank Ebersoll
@frankebersoll
Jan 21 2016 22:09
i’m still struggling with the test project… is it possible that it loads different components from what i see in the windows console?
Blake Niemyjski
@niemyjski
Jan 21 2016 22:09
what do you mean frank
the windows sample app?
Frank Ebersoll
@frankebersoll
Jan 21 2016 22:11
i added the nested exception test to the test project
but it doesn’t produce the error
Blake Niemyjski
@niemyjski
Jan 21 2016 22:28
so whats the difference
Frank Ebersoll
@frankebersoll
Jan 21 2016 22:30
nice
Blake Niemyjski
@niemyjski
Jan 21 2016 23:35
Client IP 127.0.0.1,65.31.226.103
wondering if your request info contains local ips
if we should just remove them
and put your public one in there