These are chat archives for exceptionless/Discuss

25th
Jan 2016
Blake Niemyjski
@niemyjski
Jan 25 2016 13:17
hmm
yeah I can take a look, @srijken unless you already figured it out
Sander Rijken
@srijken
Jan 25 2016 13:23
not yet
Blake Niemyjski
@niemyjski
Jan 25 2016 13:25
ok
Sander Rijken
@srijken
Jan 25 2016 13:49
I couldn't figure out what was causing that
Blake Niemyjski
@niemyjski
Jan 25 2016 13:49
I’ll take a look, just catching up on news and support
James Connor
@megakid
Jan 25 2016 14:55
Is there anyway I can load my error dashboard (from an external link) with a filter set e.g. tag: "BETA"
I guess not but I can suggest a new feature
James Connor
@megakid
Jan 25 2016 15:01
I guess it would need to be in the querystring
Blake Niemyjski
@niemyjski
Jan 25 2016 16:08
no
we don’t have query string support yet for a filter
I’m not sure why I’m not getting notifications for this room
exceptionless/Exceptionless.UI#11
Can you log that here?
Eric J. Smith
@ejsmith
Jan 25 2016 16:54
Feel like the momentum for this project is starting to pick up. I am excited! Would love to see a bunch of people using the app (even if they aren’t hosting with us).
Blake Niemyjski
@niemyjski
Jan 25 2016 17:02
exceptionless/Exceptionless#181
:)
Eric J. Smith
@ejsmith
Jan 25 2016 17:24
Interesting
James Connor
@megakid
Jan 25 2016 17:26
I guess that is similar to errbit that uses the Airbrake API
Eric J. Smith
@ejsmith
Jan 25 2016 17:32
Yeah, I can’t imagine they would be happy about it, but all of their clients are OSS so not really anything they can say. :-)
Frank Ebersoll
@frankebersoll
Jan 25 2016 17:57
hey there
Blake Niemyjski
@niemyjski
Jan 25 2016 17:58
hey there
Frank Ebersoll
@frankebersoll
Jan 25 2016 17:59
i’m still working on NodeFileStorage.ts and it isn’t so easy as i thought it would be
Blake Niemyjski
@niemyjski
Jan 25 2016 18:00
:(
what kind of issues are you running into?
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:01
i’m trying to return a list of items that are ordered by creation time
Blake Niemyjski
@niemyjski
Jan 25 2016 18:02
yeah
might be tough eh?
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:02
i tried to use the creation time of the filesystem
but the test got red, because the timestamp was the same for all files that are created in the same second
so i’m going to encode the time in milliseconds in the filename now
Blake Niemyjski
@niemyjski
Jan 25 2016 18:04
yeah, might be good to just put the ticks in there
epoch ticks? or something
Eric J. Smith
@ejsmith
Jan 25 2016 18:04
do we care down to that level? I think the only thing we are getting them sorted for is just to submit them in the same order they came in, right?
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:05
yes, and even that did not work @ejsmith
Eric J. Smith
@ejsmith
Jan 25 2016 18:06
because there were too many?
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:06
reading them from the filesystem doesn’t provide any particular order
Blake Niemyjski
@niemyjski
Jan 25 2016 18:06
@srijken I can reproduce as well
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:06
yes, because some happened in the same second and ordering by creation time happend to be arbitrary
Eric J. Smith
@ejsmith
Jan 25 2016 18:06
ahh yeah
so putting the time into the file name would help.
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:07
even milliseconds might not be enough.
Eric J. Smith
@ejsmith
Jan 25 2016 18:07
as long as they get submitting in roughly the right order, then we should be fine, no?
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:07
i don’t know, i thought about encoding them into the file as additional json field, but then we would need to decode everything all the time
Eric J. Smith
@ejsmith
Jan 25 2016 18:08
yeah, that’s not good… would be a massive hit just to find the next items to process.
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:08
@ejsmith i don’t know, i just know that the unit test for InMemoryStorage wants them to be ordered :-)
Eric J. Smith
@ejsmith
Jan 25 2016 18:08
well, maybe we can change up the assertions of that test.
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:08
i think putting it in the filename will work
Eric J. Smith
@ejsmith
Jan 25 2016 18:08
we don’t need them to be the exact same order.
Frank Ebersoll
@frankebersoll
Jan 25 2016 18:08
we can optimize later.
Eric J. Smith
@ejsmith
Jan 25 2016 18:09
ok
Blake Niemyjski
@niemyjski
Jan 25 2016 18:10
we currently submit them in the same order so those that happen at the same exact time show up in the ui in the right order
@srijken @ejsmith kinda a big bug… https://github.com/exceptionless/Exceptionless.Net/blob/master/Source/Extras/Extensions/ToErrorModelExtensions.cs#L153-L154 the cache entry is by reference so module id is set in the cache.. guess we should ignore that line and always set module id to the current id in the list...
not sure why we were doing a continue there...
Blake Niemyjski
@niemyjski
Jan 25 2016 18:41
do you remember why?
Blake Niemyjski
@niemyjski
Jan 25 2016 19:03
@srijken I’ve committed a fix to that branch
might want to get latest
Added some images to the release section :), hopefully there are no bots that scrap images for email addresses lol
Blake Niemyjski
@niemyjski
Jan 25 2016 21:21
but if we rolled it out and suddenly our quota disappeared we would be pissed :P
CEVO|Tasky: understood it's there (this uses events)
CEVO|Tasky: but the implication could be missed
That Guy: well, it doesn't really matter for us as we are on an unlimited quota but we have a few thousand deploys
That Guy: yeah
CEVO|Tasky: right I meant your users
CEVO|Tasky: like how many of your clients use it for server vs. client apps
CEVO|Tasky: and how many might get caught off guard
CEVO|Tasky: IDK just my initial reaction to that :P
That Guy: yeah
That Guy: wondering if we should turn it off by default
CEVO|Tasky: I'd say worth a discussion for you guys
@ejsmith argument against turning on sessions by default
maybe they should be opt in for heartbeats / enable sessions
Eric J. Smith
@ejsmith
Jan 25 2016 21:28
I made this argument already.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:29
for or against, I can update the clients do do this, take me 30 seconds
?
Eric J. Smith
@ejsmith
Jan 25 2016 21:33
I told you that I think we should make people opt into using sessions in their clients.
I think we should put a big message on the sessions report telling them what to do if they don’t have any sessions.
I really don’t feel like sessions are useful unless you are reporting all sessions… not just ones that have errors.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:35
ok
I’ll update the clients and readme
Eric J. Smith
@ejsmith
Jan 25 2016 21:35
I want to make sure that if they click the sessions report we tell them that they need to update their clients and enable sessions.
my hope is that we get a bunch of people to update their clients and report all sessions.
then we can get accurate useful info like number of sessions with errors
percent of sessions affected by an error
we can’t do that if all sessions aren’t reported.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:39
yeah
Eric J. Smith
@ejsmith
Jan 25 2016 21:40
This is also where I wish we would’ve held off until we had page view reporting because that is when sessions become really useful.
and that is the initial value until we start building stats off the session numbers.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:46

Session tracking

Exceptionless can track user sessions by a users identity (defaults to Environment.UserName).
You can specify a unique id and friendly display name by calling:

ExceptionlessClient.Default.Configuration.SetUserIdentity("UNIQUE_ID_OR_EMAIL_ADDRESS", "Display Name");

By default the call to Exceptionless.ExceptionlessClient.Default.Register() will
automatically submit a session start event and send a session end event on process exit.
If you wish to send a heartbeat event every 30 during inactivity please call the following method

ExceptionlessClient.Default.Configuration.UseSessions();

how do you like that text in the Win
WinForms / WPF readme?
Eric J. Smith
@ejsmith
Jan 25 2016 21:48
I think the user needs to opt into sessions in general. UseSessions should control wether or not we event send the start and end sessions.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:48
yeah
then we’d have to move that helper method to the clients
Eric J. Smith
@ejsmith
Jan 25 2016 21:48
Ideally, if we can get the client to the point of them just having to say UseSessions() and it does everything.
that would be ideal
Blake Niemyjski
@niemyjski
Jan 25 2016 21:49
and hope that processQueue() isn’t called twice...
Eric J. Smith
@ejsmith
Jan 25 2016 21:49
they opt in… and we automatically do things like send start and end events.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:49
so want me to change that completely?
sigh
Eric J. Smith
@ejsmith
Jan 25 2016 21:50
and make it really easy for them to submit views
Blake Niemyjski
@niemyjski
Jan 25 2016 21:50
move UseSessions() to both the winforms and wpf client and other clients don’t havei t
Eric J. Smith
@ejsmith
Jan 25 2016 21:50
why do we need to move it out?
why can’t it be in the core and controls a flag that other code can look at?
Blake Niemyjski
@niemyjski
Jan 25 2016 21:50
because they wireup to process exit and call submit session end and close
Eric J. Smith
@ejsmith
Jan 25 2016 21:51
the process exit code would look for that flag.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:51
so you want me to add a flag to configuration
UseSessions?
Eric J. Smith
@ejsmith
Jan 25 2016 21:52
we have similar things in there now..
IncludePrivateInfo
Enabled
SessionsEnabled on there maybe.
Blake Niemyjski
@niemyjski
Jan 25 2016 21:53
ok
Blake Niemyjski
@niemyjski
Jan 25 2016 21:54
    /// <summary>
    /// Gets or sets a value indicating whether to automatically send session start, session heartbeats and session end events.
    /// </summary>
    public bool SessionsEnabled { get; set; }
Eric J. Smith
@ejsmith
Jan 25 2016 21:55
not sure where to put the heartbeat thing...
public static void UseSessions(this ExceptionlessConfiguration config, bool sendHeartbeats = true) {
if (sendHeartbeats)
config.AddPlugin<HeartbeatPlugin>();
}
yeah, actually that works.
we turn the EnableSessions flag on and we add the heartbeat plugin.
then other plugins can look at the EnableSessions setting.
and do other things.
then it all boils down to just calling UseSessions()
and magic happens
we should probably add code in UseSessions to see if a user identity has already been set and if so, send a session start.
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:01
oh noes
Blake Niemyjski
@niemyjski
Jan 25 2016 22:02

Session tracking

Exceptionless can track user sessions by a users identity which defaults to Environment.UserName.
You can also specify a unique id and friendly display name by calling the following extension method:

ExceptionlessClient.Default.Configuration.SetUserIdentity("UNIQUE_ID_OR_EMAIL_ADDRESS", "Display Name")

To enable session start event, session heartbeats and session end events to be sent automatically please
call the following extension method before the call to Exceptionless.ExceptionlessClient.Default.Register().

ExceptionlessClient.Default.Configuration.UseSessions()

If you also want to disable session heartbeat events from being sent every 30 seconds during inactivity
please pass false as an argument to the UseSessions() extension method.

ExceptionlessClient.Default.Configuration.UseSessions(false)

Eric J. Smith
@ejsmith
Jan 25 2016 22:03
where is this going?
Blake Niemyjski
@niemyjski
Jan 25 2016 22:03
winforms and wpf readme
bottom of it
also in the wiki under configuration
Eric J. Smith
@ejsmith
Jan 25 2016 22:03
that is way too much info and not very intuitive
not sure how that is too much info
Eric J. Smith
@ejsmith
Jan 25 2016 22:04
Give me edit
Blake Niemyjski
@niemyjski
Jan 25 2016 22:04
leave a comment below it
not sure you can edit a gist
please keep in mind we gotta keep this code examples as simple as possible because nubs use vb
:D
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:07
JSON.parse() doesn’t deserialize Date fields :-(
Blake Niemyjski
@niemyjski
Jan 25 2016 22:07
what?
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:07
yes.
event => file => event, date fields gone.
Blake Niemyjski
@niemyjski
Jan 25 2016 22:08
how the heck
are they iso date fields or string?
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:08
seems to be a well-known fact in the internetz, only hasn’t bitten me up to now
Blake Niemyjski
@niemyjski
Jan 25 2016 22:09
I mean “date”: new Date(23423423234),
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:09
expected Mon, 25 Jan 2016 21:49:53 GMT to equal '2016-01-25T21:49:53.921Z‘
Blake Niemyjski
@niemyjski
Jan 25 2016 22:09
or “date”:”234234/23423/234 234:234:"
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:10
they are what we use as date on our event objects
Date
Blake Niemyjski
@niemyjski
Jan 25 2016 22:10
hmm
guess I’ve never noticed that
any good way to solve it
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:11
there seems to be workarounds that use a reviver callback
problem is that dates have no literal representation
Blake Niemyjski
@niemyjski
Jan 25 2016 22:14
you realize by default that will send heartbeats
and may piss off a user
we had a property called EnableSSL
which makes me think we should call this EnableSessions instead of SessionsEnabled
Eric J. Smith
@ejsmith
Jan 25 2016 22:17
They just opted into sessions
Blake Niemyjski
@niemyjski
Jan 25 2016 22:17
ok
how big is that library?
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:22
i got it working with a small function using a regex
Blake Niemyjski
@niemyjski
Jan 25 2016 22:22
you da real mvp
exceptionless/Exceptionless.JavaScript@a13d471
@frankebersoll can I push that or do you have any bug fixes that need to go into that
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:28
i haven’t had the pleasure to work with sessions in JS
Blake Niemyjski
@niemyjski
Jan 25 2016 22:29
I’m writing up a blog post on it :)
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:29
only adding this stuff to our .NET app
i’m doing this persistance stuff because it will be needed for the relay server
Blake Niemyjski
@niemyjski
Jan 25 2016 22:29
ok
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:29
i figured that we can easily build a relay if we have persistance in place
Blake Niemyjski
@niemyjski
Jan 25 2016 22:29
how will that work?
each submission on the relay will need to be scoped to a specific api key?
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:30
yes, might be
it could instantiate a client for each api key
and the client would need persistance enabled
Blake Niemyjski
@niemyjski
Jan 25 2016 22:31
yeah
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:31
not too much additional work needed, i guess
Blake Niemyjski
@niemyjski
Jan 25 2016 22:32
yeah
:)
Frank Ebersoll
@frankebersoll
Jan 25 2016 22:35
omg
what is wrong here? entries.sort(entry => entry.timestamp);
well, array.sort takes an (a,b) => bool
but the compiler won’t complain if you put an (a) => bool there
sorry, not bool but number (-1, 0, 1)
so, it didn’t really sort. it didn’t do anything but steal 1 hour of my time.
Blake Niemyjski
@niemyjski
Jan 25 2016 22:48
@frankebersoll :(
Blake Niemyjski
@niemyjski
Jan 25 2016 22:54
1.3.1 js client is pushed
Blake Niemyjski
@niemyjski
Jan 25 2016 23:22
once nuget gets back 3.3.2 will be piushed
Frank Ebersoll
@frankebersoll
Jan 25 2016 23:37
green :-)
not green :(
don’t understand how hard it is to upload a file
and why it takes 15 minutes to upload 3 mb worth of files
Frank Ebersoll
@frankebersoll
Jan 25 2016 23:59
pushed new branch: storage.