Reduce memory consumption when an API exception goes to Sentry
When Sentry gets Rack context, it can grab information that is very large (like Grape routing information) from the Rack environment. It can waste a lot of time and memory processing that information, only to then ... not send it to Sentry as it's not a standard key.
https://github.com/getsentry/sentry-ruby/pull/1197 describes this perfectly, but as we're not on the latest version, https://github.com/getsentry/sentry-ruby/pull/1198 is the PR that we're pulling in to fix this issue.
To test this locally:
- Create a project.
- Move or delete its on-disk repo.
- Configure Sentry.
- Run
curl http://$host/api/v4/projects/$id/repository/branches/main
. - Check the
mem_bytes
field inapi_json.log
.
This change takes several hundred megabytes from that value in my local environment.
Changelog: https://github.com/getsentry/sentry-ruby/blob/master/sentry-raven/CHANGELOG.md
Diff: https://my.diffend.io/gems/sentry-raven/3.0.4/3.1.2
Part of #330729 (closed).