Skip to content

Commit 90fa855

Browse files
authored
Do not store No-Op scopes onto OpenTelemetry Context when wrapping (#4631)
* Do not store No-Op scopes onto OpenTelemetry Context when wrapping * Update sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/test/kotlin/io/sentry/opentelemetry/SentryContextWrapperTest.kt * changelog * mute codecov for now
1 parent 1cdca11 commit 90fa855

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
### Unreleased
4+
5+
### Fixes
6+
7+
- Do not store No-Op scopes onto OpenTelemetry Context when wrapping ([#4631](https://github.com/getsentry/sentry-java/pull/4631))
8+
- In 8.18.0 and 8.19.0 the SDK could break when initialized too late.
9+
310
## 8.19.0
411

512
### Features

codecov.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ coverage:
88
project:
99
default:
1010
target: 78%
11-
threshold: 3%
11+
threshold: 4%
1212
patch: off
1313
range: 78...100
1414
precision: 3

sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/SentryContextWrapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ private <V> boolean isOpentelemetrySpan(final @NotNull ContextKey<V> contextKey)
4747
if (sentrySpan != null) {
4848
forkedScopes.setActiveSpan(sentrySpan);
4949
}
50-
return context.with(SENTRY_SCOPES_KEY, forkedScopes);
50+
if (forkedScopes.isNoOp()) {
51+
return context;
52+
} else {
53+
return context.with(SENTRY_SCOPES_KEY, forkedScopes);
54+
}
5155
}
5256

5357
private static @NotNull IScopes forkCurrentScopeInternal(
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.sentry.opentelemetry
2+
3+
import io.opentelemetry.context.Context
4+
import io.sentry.Sentry
5+
import io.sentry.opentelemetry.SentryOtelKeys.SENTRY_SCOPES_KEY
6+
import junit.framework.TestCase.assertNull
7+
import junit.framework.TestCase.assertTrue
8+
import kotlin.test.Test
9+
10+
class SentryContextWrapperTest {
11+
12+
@Test
13+
fun `ensure noop scopes are not stored on Context`() {
14+
val context = Context.root()
15+
assertNull(context.get(SENTRY_SCOPES_KEY))
16+
assertTrue(Sentry.getCurrentScopes().isNoOp)
17+
val wrappedContext = SentryContextWrapper.wrap(context)
18+
assertNull(wrappedContext.get(SENTRY_SCOPES_KEY))
19+
}
20+
}

0 commit comments

Comments
 (0)