May 15th, 2019 • By István Erdő
Imagine that you are developing an application and there's an error in the code. When you release it to production, this error causes hundreds of thousands of crashes. In this case, a logging tool would list all the crashes but an error monitoring tool, like Rollbar, would attempt to group the crashes together. Now you would receive just one notification about an error that crashed hundreds of thousands of times instead of many notifications about different crashes. Error grouping is hence essential to any error monitoring solution.
Our commitment to helping software developers spend less time on debugging has recently led to the acquisition of Hungary-based Samebug, experts in the topic of error grouping. With an expanded team we now have the resources to operate an entire squad focused on grouping algorithm improvements. This squad is made up of computer and data scientists working full time on delivering various improvements to the algorithm, both small and large, that will be rolled out gradually.
We are excited to announce the release of the first few improvements, solutions to specific issues that are small but can be very annoying when they come up.
The second enhancement is a general upgrade for everyone, a change in recursion handling. It can be frustrating when the crashes related to the same recursive function create a new item for each recursion depth. Therefore, we now group together occurrences where the difference lies only in the number of recursive calls. We suggest you enable this for every project.
Finally, we have an improvement related to Python. By default, we include the code context (source code fragment) of Python stack frames in the string we use for fingerprinting, but this can lead to occurrences not being grouped together even when you just reformatted the code or renamed a variable. You can now disable this for any project. However, note that disabling it might result in overgrouping when the method names are not unique, like in the case of inner functions and lambdas.
In case you are still overriding the default algorithm with client-side fingerprinting, you may want to consider turning it off in favor of server-side fingerprinting. This will allow you take full advantage of the new grouping/fingerprinting features. You can still set your own fingerprinting rules to be used on the server side.
To group missing jQuery errors together and ignore recursive calls in occurrence grouping, head over to Settings → Advanced → Migrations. These migrations will only be visible for existing projects. If you create a new project, they will be enabled by default and the options won't be visible.
To disable Python code context inclusion in fingerprinting or ignore client-side fingerprinting, go to Settings → Setup → Custom Fingerprinting.
Keep in mind that you have to go to each project where you want to enable an improvement. Don't forget to save changes!
Once saved, the changes will take effect immediately and any new occurrences will be handled with the improved algorithm but grouping is not retrospective. As a result, you will probably see more items temporarily.
We’ll be collecting feedback about the improvements through the in-app chat or via email so do not hesitate to get in touch with specific comments. We’ll also conduct a survey about grouping in general soon.
At Rollbar we are aiming for a very high grouping standard that perfectly groups occurrences belonging to the same bug into a single item. There have been a number of long-standing issues that are yet to be solved by anyone in the industry. With enough feedback about the improvements and problems, we believe these can be solved.
Now that we have the resources, all that's left is for you to keep giving feedback so that we can successfully implement changes and make Rollbar's grouping work perfectly for all kinds of developers. More improvements are coming soon!