Skip to content

Commit de275f3

Browse files
authored
Merge 400b60e into cb8746c
2 parents cb8746c + 400b60e commit de275f3

File tree

8 files changed

+44
-16
lines changed

8 files changed

+44
-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: 24 additions & 4 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();
@@ -301,6 +300,8 @@ private static void init(final @NotNull SentryOptions options, final boolean glo
301300
"Sentry has been already initialized. Previous configuration will be overwritten.");
302301
}
303302

303+
initForOpenTelemetryMaybe(options);
304+
304305
// load lazy fields of the options in a separate thread
305306
try {
306307
options.getExecutorService().submit(() -> options.loadLazyFields());
@@ -357,6 +358,27 @@ private static void init(final @NotNull SentryOptions options, final boolean glo
357358
}
358359
}
359360

361+
private static void initForOpenTelemetryMaybe(SentryOptions options) {
362+
if (SentryOpenTelemetryMode.OFF == options.getOpenTelemetryMode()) {
363+
options.setSpanFactory(new DefaultSpanFactory());
364+
// } else {
365+
// enabling this causes issues with agentless where OTel spans seem to be randomly ended
366+
// options.setSpanFactory(SpanFactoryFactory.create(new LoadClass(), NoOpLogger.getInstance()));
367+
}
368+
initScopesStorage(options);
369+
OpenTelemetryUtil.applyIgnoredSpanOrigins(options, new LoadClass());
370+
}
371+
372+
@SuppressWarnings("UnusedMethod")
373+
private static void initScopesStorage(SentryOptions options) {
374+
getScopesStorage().close();
375+
if (SentryOpenTelemetryMode.OFF == options.getOpenTelemetryMode()) {
376+
scopesStorage = new DefaultScopesStorage();
377+
} else {
378+
scopesStorage = ScopesStorageFactory.create(new LoadClass(), options.getLogger());
379+
}
380+
}
381+
360382
@SuppressWarnings("FutureReturnValueIgnored")
361383
private static void handleAppStartProfilingConfig(
362384
final @NotNull SentryOptions options,
@@ -491,8 +513,6 @@ private static void initConfigurations(final @NotNull SentryOptions options) {
491513
}
492514
logger.log(SentryLevel.INFO, "Initializing SDK with DSN: '%s'", options.getDsn());
493515

494-
OpenTelemetryUtil.applyIgnoredSpanOrigins(options, new LoadClass());
495-
496516
// TODO: read values from conf file, Build conf or system envs
497517
// eg release, distinctId, sentryClientName
498518

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/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)