Skip to content

fix(scopes): apply withScope data to events in globalHubMode - #6004

Merged
markushi merged 7 commits into
mainfrom
fix/with-scope-global-hub-mode
Aug 28, 2026
Merged

fix(scopes): apply withScope data to events in globalHubMode#6004
markushi merged 7 commits into
mainfrom
fix/with-scope-global-hub-mode

Conversation

@markushi

Copy link
Copy Markdown
Member

📜 Description

Sentry.withScope forks the current scope and makes it current, but Sentry.getCurrentScopes short-circuited to rootScopes when globalHubMode was enabled, so the fork was never read back. Everything set inside the callback was silently dropped.

Honour scopes that were explicitly made current, as long as they descend from the current rootScopes. Implicit forking stays suppressed. pushScope and popScope remain no-ops, since they are unbalanced.

💡 Motivation and Context

globalHubMode is on by default on Android, so this affected all Android users since 8.0.0.

💚 How did you test it?

Unit tests in SentryTest.kt, run for globalHubMode both true and false. Verified they fail without the fix.

📝 Checklist

  • I added GH Issue ID & Linear ID
  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.
  • Public API changes reviewed by another Mobile SDK team member or implemented according to the develop docs spec.

🔮 Next steps

Hybrid SDKs relying on withScope being a no-op under globalHubMode should be made aware.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@linear-code

linear-code Bot commented Aug 26, 2026

Copy link
Copy Markdown

JAVA-489

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@sentry

sentry Bot commented Aug 26, 2026

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
SDK Size io.sentry.tests.size 8.54.0 (1) release

⚙️ sentry-android Build Distribution Settings

@markushi
markushi marked this pull request as ready for review August 26, 2026 10:05
Comment thread sentry/src/main/java/io/sentry/Sentry.java Outdated
@markushi markushi added the deep-dive PR needs a thorough review of design, behavior, and edge cases label Aug 26, 2026
markushi and others added 2 commits August 26, 2026 15:27
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@adinauer adinauer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

l we could add new tests for global hub mode to SentryContextTest. We still have a TODO there from the hubs scopes merge.

Comment thread sentry/src/main/java/io/sentry/Sentry.java Outdated
markushi and others added 2 commits August 28, 2026 07:46
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@markushi

Copy link
Copy Markdown
Member Author

l we could add new tests for global hub mode to SentryContextTest. We still have a TODO there from the hubs scopes merge.

Done in 0e8f818. Two tests added, and the [HSM] TODO removed — this PR answers the question it was asking, since Sentry.getCurrentScopes no longer always returns rootScopes.

  • current scope is isolated between coroutines in global hub mode — mirrors the existing ...CurrentScope test with globalHubMode = true. Verified it fails without the production fix.
  • coroutines without SentryContext share the root scopes in global hub mode — a coroutine on Dispatchers.Default reads and writes the shared root scopes. This pins the property that implicit per-thread forking stays suppressed, so the fix cannot be over-corrected later. Verified it fails when flipped to globalHubMode = false.

Test-only, no production change.

…ests

The transaction is finished asynchronously, after the HTTP response has
been returned, so verifying the transport call right after the exchange
races with the send and fails intermittently.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@markushi
markushi merged commit 620be68 into main Aug 28, 2026
68 of 69 checks passed
@markushi
markushi deleted the fix/with-scope-global-hub-mode branch August 28, 2026 07:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deep-dive PR needs a thorough review of design, behavior, and edge cases

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HTTP request payload and response body not captured in error events

2 participants