Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
c6bd8be
feat(rails): add messaging span data to ActiveJob consumer transaction
solnic May 7, 2026
643ad45
feat(rails): emit producer span when enqueueing ActiveJob
solnic May 7, 2026
4f73774
feat(rails): propagate trace context through ActiveJob payload
solnic May 7, 2026
8c798a0
fixup(rails): account for AJ producer span in active_storage subscrib…
solnic May 7, 2026
23603cf
feat(active_job): propagate allowed user context
solnic May 7, 2026
38f5d6c
feat(rails): isolate Sentry hub per worker thread for ActiveJob
solnic May 7, 2026
2713d53
refactor(rails): bundle ActiveJob tracing examples into a distributed…
solnic May 7, 2026
dbedeef
fixup(rails): widen latency tolerance on Rails < 7 in messaging_span_…
solnic May 7, 2026
f02ad99
refactor(rails): introduce worker_thread harness hook for the hub-iso…
solnic May 7, 2026
1beeccb
fix(rails): no with_usec in 7.0
solnic May 8, 2026
f5ace8f
chore(rails): patch AJ test adapter for 5.2
solnic May 12, 2026
dac5245
fix(active_job): always emit retry count on the consumer transaction
solnic May 12, 2026
4f2e9bd
feat(active_job): add active_job_propagate_traces config option
solnic May 12, 2026
55ec835
feat(active_job): set scope tags and context on consumer like Sidekiq
solnic May 12, 2026
32f2cfb
fix(active_job): avoid shared queue race in jruby
solnic May 12, 2026
a3322d1
fix(active_job): save and restore hub around job execution
solnic May 12, 2026
5266cbd
fix(active_job): better specs for thread isolation
solnic May 12, 2026
4f6d3aa
fix(active_job): correct retry counter
solnic May 12, 2026
16217ca
fix(active_job): widen manual flushing to rails < 6.1
solnic May 20, 2026
7187c16
refactor(active_job): make the spec harness adapter-agnostic
solnic May 20, 2026
9642dad
test(active_job): verify the AJ tracing suite passes on the :sidekiq …
solnic May 20, 2026
fdbb9d8
test(e2e): end-to-end ActiveJob distributed-tracing spec
solnic May 20, 2026
b4ff39e
perf(active_job): boot the dummy app once per spec group
solnic May 21, 2026
cd18e72
tests(active_job): add basic scenario for active_job_propagate_traces
solnic May 22, 2026
9c7bde8
refa(active_job): log more details when adding sentry payload fails
solnic May 22, 2026
eed24e3
refa(active_job): store our stuff under single _sentry ivar
solnic May 22, 2026
c4d309e
refa(active_job): better thread isolation spec
solnic May 25, 2026
28f4ee3
tests(active_job): request-based hub isolation coverage
solnic May 25, 2026
cc0144a
fix(active_job): calc latency to reduce flakiness
solnic May 25, 2026
1c6cff9
feat(rails): add dj/resque adapter specs
solnic May 29, 2026
aa9100b
refactor(active_job): ensure enqueue won't crash due to sentry crashing
solnic Jun 15, 2026
b29a353
fix(active_job): symbolize user keys for proper scope handling
solnic Jun 15, 2026
bed67d8
tests(rails): ensure our instrumentation failures do not break AJ bac…
solnic Jun 16, 2026
120bbe7
tests(rails): ensure queue.publish is emitted regardless of propagate…
solnic Jun 16, 2026
1a3b4c3
refactor(rails): remove dead defaulting to {} for user
solnic Jun 16, 2026
8e13b4d
refactor(rails): use consumer_transaction helper
solnic Jun 16, 2026
ee46cad
fix(rails): relax spying to make the spec pass under old rails
solnic Jun 16, 2026
b3aff29
fix(active_job): use `background: true` like integration gems
solnic Jun 25, 2026
3c9eeda
chore(deps): bump locks
solnic Jun 30, 2026
e748124
refactor(active_job): simpler allowlist calc
solnic Jun 30, 2026
91f4d22
refactor(active_job): streamline test job defs
solnic Jun 30, 2026
19c201d
refactor(active_job): shorten comment about spec skipping
solnic Jun 30, 2026
65157d0
refactor(active_job): shorten spec desc
solnic Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .devcontainer/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,11 @@ SENTRY_E2E_SVELTE_APP_PORT=4001
SENTRY_E2E_RAILS_APP_URL="http://localhost:4000"
SENTRY_E2E_SVELTE_APP_URL="http://localhost:4001"

# ActiveJob queue adapter under test: async | inline | sidekiq | resque | delayed_job
SENTRY_E2E_ACTIVE_JOB_ADAPTER="async"

# Redis for the sidekiq/resque adapters (the Compose service is named "redis")
REDIS_URL="redis://redis:6379"

# Faster builds with compose
COMPOSE_BAKE=true
8 changes: 8 additions & 0 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ services:
command: ["mise", "run", "e2e:serve"]
environment:
BUNDLE_PATH: /home/sentry/bundle
depends_on:
redis:
condition: service_healthy
volumes:
- ..:/workspace/sentry:cached
- bundle-gems:/home/sentry/bundle
Expand All @@ -38,6 +41,11 @@ services:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 2s
timeout: 3s
retries: 10

volumes:
bundle-gems:
25 changes: 16 additions & 9 deletions .github/workflows/e2e_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,24 @@ concurrency:

jobs:
e2e-tests:
name: e2e tests
name: e2e tests (ruby ${{ matrix.ruby.flavor }}, ${{ matrix.adapter }})
runs-on: ubuntu-latest
timeout-minutes: 5
timeout-minutes: 8

strategy:
fail-fast: false
matrix:
include:
- ruby_version: "3.4.9"
ruby:
- version: "3.4.9"
flavor: "3.4"
- ruby_version: "4.0.3"
- version: "4.0.3"
flavor: "4.0"
adapter:
- async
- inline
- sidekiq
- resque
- delayed_job

steps:
- name: Checkout code
Expand All @@ -42,9 +48,10 @@ jobs:
run: |
cd .devcontainer
cp .env.example .env
echo "RUBY_VERSION=${{ matrix.ruby_version }}" >> .env
echo "DOCKER_IMAGE=ghcr.io/getsentry/sentry-ruby-devcontainer-${{ matrix.flavor }}" >> .env
echo "RUBY_VERSION=${{ matrix.ruby.version }}" >> .env
echo "DOCKER_IMAGE=ghcr.io/getsentry/sentry-ruby-devcontainer-${{ matrix.ruby.flavor }}" >> .env
echo "DOCKER_TAG=${{ steps.devcontainer-version.outputs.version }}" >> .env
echo "SENTRY_E2E_ACTIVE_JOB_ADAPTER=${{ matrix.adapter }}" >> .env

- name: Log in to GHCR
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3
Expand All @@ -54,7 +61,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}

- name: Pull test container image
run: docker pull ghcr.io/getsentry/sentry-ruby-devcontainer-${{ matrix.flavor }}:${{ steps.devcontainer-version.outputs.version }}
run: docker pull ghcr.io/getsentry/sentry-ruby-devcontainer-${{ matrix.ruby.flavor }}:${{ steps.devcontainer-version.outputs.version }}

- name: Restore node_modules cache
uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3
Expand Down Expand Up @@ -114,7 +121,7 @@ jobs:
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: e2e-test-logs-ruby-${{ matrix.ruby_version }}
name: e2e-test-logs-ruby-${{ matrix.ruby.version }}-${{ matrix.adapter }}
path: |
log/sentry_debug_events.log
retention-days: 7
6 changes: 5 additions & 1 deletion .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ run = "cd spec/apps/rails-mini && bundle exec ruby app.rb"
description = "Start the svelte-mini e2e app"
run = "cd spec/apps/svelte-mini && npm run dev"

[tasks."e2e:worker"]
description = "Start the rails-mini ActiveJob worker (sidekiq/resque/delayed_job; idles for async/inline)"
run = "cd spec/apps/rails-mini && bundle exec ruby worker.rb"

[tasks."e2e:serve"]
description = "Start all e2e apps in parallel"
depends = ["e2e:rails", "e2e:svelte"]
depends = ["e2e:rails", "e2e:svelte", "e2e:worker"]
4 changes: 4 additions & 0 deletions sentry-delayed_job/gemfiles/ruby-2.7.gemfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

121 changes: 0 additions & 121 deletions sentry-delayed_job/gemfiles/ruby-3.1.gemfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions sentry-delayed_job/gemfiles/ruby-4.0.gemfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading