v3.4.0
Version 3.4.0 focused on massive improvements to deduplicating events. We'd like to thank @srijken for all of his hard work in implementing this functionality.
Deduplication improvements
In previous versions of the client we had a simple plugin that looked at the hash code of each stack trace and discarded events when any part of the errors stack trace was a match. We knew we could be smarter about this and provide you even more value so iterated on it.
Here are some key improvements over the previous implementation:
- All events types are considered for deduplication instead of just error events.
- All of our models now have equality and
GetHashCode
implementations which allows us to calculate more accurate hash codes. This allows us to be super confident about discarding duplicate events. - We keep a counter of all discarded events and submit that
Count
so you know exactly how many events occurred without paying the price of submitting the duplicates.
How does it work?
We have a plugin with a low priority that sits at the end of the plugin pipeline. This is to ensure events we check for duplication have been processed completely before we check it. Here is how our plugin works:
- Lets assume we submit a new event. Our plugin checks the events hash code to see if the event has been processed within the past 60 seconds. Since it hasn't been processed we add the hash code to a list of processed hash codes and allow the event to be submitted.
- The next time an event is submitted that matches the previous events hash code in step 1, we cancel the event from being submitted and enqueue it into a queue for submission at a later time.
- Any subsequent events that match on hash code will be canceled and a counter on the enqueued event (from step 2) is incremented and occurrence time is also updated.
- After ~60 seconds, a background timer submits any enqueued events from step 2.
What we gain from this is allowing you to see an accurate representation of events are occurring within your app without them counting against your plan (because only a fraction of them were submitted).
How do I get this functionality?
Just upgrade your clients to the latest version!
Please take a look at the change log for a full list of the changes.
Feedback
We're listening and we'd love to hear your feedback! Please send us your feedback by clicking on one of the links below!