getsentry / getsentry/sentry-ruby
ActiveJob rework
- Dominant language
- Ruby
- Stars
- 987
- Forks
- 541
- Avg merge
- 17h 40m
- Merged PRs (30d)
- 19
Description
### Description
Flip ActiveJob from a fallback to the **primary** background-job integration in `sentry-rails`. One code path covers every AJ-backed adapter (SolidQueue, GoodJob, Sidekiq+AJ, future adapters) with tracing, error capture, and context enrichment. No new gems.
## Current state (recap)
- [sentry-rails/lib/sentry/rails/active_job.rb](sentry-rails/lib/sentry/rails/active_job.rb) wraps `perform_now` with a transaction and exception capture, but bails out when `self.class.queue_adapter.class.to_s` is listed in `config.rails.skippable_job_adapters`.
- [sentry-sidekiq](sentry-sidekiq/lib/sentry-sidekiq.rb#L22), [sentry-resque](sentry-resque/lib/sentry-resque.rb#L21) and [sentry-delayed_job](sentry-delayed_job/lib/sentry-delayed_job.rb#L21) each push their AJ adapter name into that list at boot, so AJ only kicks in when none of those are loaded.
- No enqueue-side instrumentation and no trace propagation between producer and worker on the AJ path.
- SolidQueue / GoodJob work today only because AJ is already the fallback — but without tracing-producer linkage.
## Target state
- AJ integration owns perform-side tracing + error capture for every adapter by default.
- An enqueue-side producer span (`queue.publish`) is created in the calling transaction and carries trace headers on the job payload.
- Worker transaction continues the producer trace when headers are present.
- `sentry-sidekiq` still handles sidekiq-native jobs, but detects AJ-wrapped jobs and defers perform tracing + error capture to the AJ integration (no double reporting, no double spans).
- `sentry-resque` / `sentry-delayed_job` become maintenance-only.
Contributor guide
Assessment
This issue has not been assessed yet.