Skip to content

Commit 00de25b

Browse files
authored
Merge 5231140 into a0a4baa
2 parents a0a4baa + 5231140 commit 00de25b

File tree

9 files changed

+36
-16
lines changed

9 files changed

+36
-16
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.sentry.SendFireAndForgetEnvelopeSender;
1616
import io.sentry.SendFireAndForgetOutboxSender;
1717
import io.sentry.SentryLevel;
18+
import io.sentry.SentryOpenTelemetryMode;
1819
import io.sentry.android.core.cache.AndroidEnvelopeCache;
1920
import io.sentry.android.core.internal.debugmeta.AssetsDebugMetaLoader;
2021
import io.sentry.android.core.internal.gestures.AndroidViewGestureTargetLocator;
@@ -101,7 +102,7 @@ static void loadDefaultAndMetadataOptions(
101102
options.setLogger(logger);
102103

103104
options.setDefaultScopeType(ScopeType.CURRENT);
104-
105+
options.setOpenTelemetryMode(SentryOpenTelemetryMode.OFF);
105106
options.setDateProvider(new SentryAndroidDateProvider());
106107

107108
// set a lower flush timeout on Android to avoid ANRs

sentry-spring-boot-jakarta/src/test/kotlin/io/sentry/spring/boot/jakarta/it/SentrySpringIntegrationTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ open class App {
250250
open fun optionsCallback() = Sentry.OptionsConfiguration<SentryOptions> { options ->
251251
// due to OTel being on the classpath we need to set the default again
252252
options.spanFactory = DefaultSpanFactory()
253-
options.openTelemetryMode = SentryOpenTelemetryMode.ALL_ORIGINS
253+
options.openTelemetryMode = SentryOpenTelemetryMode.OFF
254254
}
255255
}
256256

sentry-spring-boot/src/test/kotlin/io/sentry/spring/boot/it/SentrySpringIntegrationTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ open class App {
251251
// due to OTel being on the classpath we need to set the default again
252252
options.spanFactory = DefaultSpanFactory()
253253
// to test the actual spring implementation
254-
options.openTelemetryMode = SentryOpenTelemetryMode.ALL_ORIGINS
254+
options.openTelemetryMode = SentryOpenTelemetryMode.OFF
255255
}
256256
}
257257

sentry/api/sentry.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2785,8 +2785,8 @@ public final class io/sentry/SentryOpenTelemetryMode : java/lang/Enum {
27852785
public static final field AGENT Lio/sentry/SentryOpenTelemetryMode;
27862786
public static final field AGENTLESS Lio/sentry/SentryOpenTelemetryMode;
27872787
public static final field AGENTLESS_SPRING Lio/sentry/SentryOpenTelemetryMode;
2788-
public static final field ALL_ORIGINS Lio/sentry/SentryOpenTelemetryMode;
27892788
public static final field AUTO Lio/sentry/SentryOpenTelemetryMode;
2789+
public static final field OFF Lio/sentry/SentryOpenTelemetryMode;
27902790
public static fun valueOf (Ljava/lang/String;)Lio/sentry/SentryOpenTelemetryMode;
27912791
public static fun values ()[Lio/sentry/SentryOpenTelemetryMode;
27922792
}

sentry/src/main/java/io/sentry/Sentry.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ public final class Sentry {
4747
private Sentry() {}
4848

4949
// TODO logger?
50-
private static volatile @NotNull IScopesStorage scopesStorage =
51-
ScopesStorageFactory.create(new LoadClass(), NoOpLogger.getInstance());
50+
private static volatile @NotNull IScopesStorage scopesStorage = NoOpScopesStorage.getInstance();
5251

5352
/** The root Scopes or NoOp if Sentry is disabled. */
5453
private static volatile @NotNull IScopes rootScopes = NoOpScopes.getInstance();
@@ -322,6 +321,7 @@ private static void init(final @NotNull SentryOptions options, final boolean glo
322321
final IScope rootIsolationScope = new Scope(options);
323322
rootScopes = new Scopes(rootScope, rootIsolationScope, globalScope, "Sentry.init");
324323

324+
initScopesStorage(options);
325325
getScopesStorage().set(rootScopes);
326326

327327
initConfigurations(options);
@@ -357,6 +357,15 @@ private static void init(final @NotNull SentryOptions options, final boolean glo
357357
}
358358
}
359359

360+
private static void initScopesStorage(SentryOptions options) {
361+
getScopesStorage().close();
362+
if (SentryOpenTelemetryMode.OFF == options.getOpenTelemetryMode()) {
363+
scopesStorage = new DefaultScopesStorage();
364+
} else {
365+
scopesStorage = ScopesStorageFactory.create(new LoadClass(), options.getLogger());
366+
}
367+
}
368+
360369
@SuppressWarnings("FutureReturnValueIgnored")
361370
private static void handleAppStartProfilingConfig(
362371
final @NotNull SentryOptions options,
@@ -492,6 +501,11 @@ private static void initConfigurations(final @NotNull SentryOptions options) {
492501
logger.log(SentryLevel.INFO, "Initializing SDK with DSN: '%s'", options.getDsn());
493502

494503
OpenTelemetryUtil.applyIgnoredSpanOrigins(options, new LoadClass());
504+
if (SentryOpenTelemetryMode.OFF == options.getOpenTelemetryMode()) {
505+
options.setSpanFactory(new DefaultSpanFactory());
506+
} else {
507+
options.setSpanFactory(SpanFactoryFactory.create(new LoadClass(), NoOpLogger.getInstance()));
508+
}
495509

496510
// TODO: read values from conf file, Build conf or system envs
497511
// eg release, distinctId, sentryClientName

sentry/src/main/java/io/sentry/SentryOpenTelemetryMode.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@
55
* use it and what way to use it in.
66
*/
77
public enum SentryOpenTelemetryMode {
8-
/** Let the SDK figure out what mode OpenTelemetry is in and whether to even use OpenTelemetry */
9-
AUTO,
108
/**
11-
* For now this only means no span origins will be ignored. This does however not mean, the SDK
12-
* won't try tro use OpenTelemetry if available.
13-
*
14-
* <p>Due to some parts of the SDK being initialized before any config mechanism is available, we
15-
* cannot completely disable the OpenTelemetry parts with this setting.
9+
* Let the SDK figure out what mode OpenTelemetry is in and whether to even use OpenTelemetry This
10+
* is the default for non Android.
1611
*/
17-
ALL_ORIGINS,
12+
AUTO,
13+
/** Do not try to use OpenTelemetry, even if it is available. This is the default for Android. */
14+
OFF,
1815
/** The `sentry-opentelemetry-agent` is used */
1916
AGENT,
2017
/**

sentry/src/main/java/io/sentry/SentryOptions.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import io.sentry.transport.NoOpTransportGate;
2222
import io.sentry.util.AutoClosableReentrantLock;
2323
import io.sentry.util.LazyEvaluator;
24-
import io.sentry.util.LoadClass;
2524
import io.sentry.util.Platform;
2625
import io.sentry.util.SampleRateUtils;
2726
import io.sentry.util.StringUtils;
@@ -2637,7 +2636,6 @@ public SentryOptions() {
26372636
private SentryOptions(final boolean empty) {
26382637
experimental = new ExperimentalOptions(empty);
26392638
if (!empty) {
2640-
setSpanFactory(SpanFactoryFactory.create(new LoadClass(), NoOpLogger.getInstance()));
26412639
// SentryExecutorService should be initialized before any
26422640
// SendCachedEventFireAndForgetIntegration
26432641
executorService = new SentryExecutorService();

sentry/src/test/java/io/sentry/HubAdapterTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ class HubAdapterTest {
1919

2020
@BeforeTest
2121
fun `set up`() {
22+
Sentry.init(
23+
SentryOptions().apply {
24+
dsn = "https://key@localhost/proj"
25+
}
26+
)
2227
Sentry.setCurrentScopes(scopes)
2328
}
2429

sentry/src/test/java/io/sentry/ScopesAdapterTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ class ScopesAdapterTest {
1919

2020
@BeforeTest
2121
fun `set up`() {
22+
Sentry.init(
23+
SentryOptions().apply {
24+
dsn = "https://key@localhost/proj"
25+
}
26+
)
2227
Sentry.setCurrentScopes(scopes)
2328
}
2429

0 commit comments

Comments
 (0)