Skip to content

Commit 726e007

Browse files
authored
Merge branch 'main' into dependabot/github_actions/github/codeql-action-3.28.15
2 parents 96aa016 + 1d7823d commit 726e007

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,24 @@
22

33
## Unreleased
44

5+
### Features
6+
7+
- Wrap configured OpenTelemetry `ContextStorageProvider` if available ([#4359](https://github.com/getsentry/sentry-java/pull/4359))
8+
- This is only relevant if you see `java.lang.IllegalStateException: Found multiple ContextStorageProvider. Set the io.opentelemetry.context.ContextStorageProvider property to the fully qualified class name of the provider to use. Falling back to default ContextStorage. Found providers: ...`
9+
- Set `-Dio.opentelemetry.context.contextStorageProvider=io.sentry.opentelemetry.SentryContextStorageProvider` on your `java` command
10+
- Sentry will then wrap the other `ContextStorageProvider` that has been configured by loading it through SPI
11+
- If no other `ContextStorageProvider` is available or there are problems loading it, we fall back to using `SentryOtelThreadLocalStorage`
12+
513
### Fixes
614

715
- Update profile chunk rate limit and client report ([#4353](https://github.com/getsentry/sentry-java/pull/4353))
816

17+
### Dependencies
18+
19+
- Bump Native SDK from v0.8.3 to v0.8.4 ([#4343](https://github.com/getsentry/sentry-java/pull/4343))
20+
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#084)
21+
- [diff](https://github.com/getsentry/sentry-native/compare/0.8.3...0.8.4)
22+
923
## 8.9.0
1024

1125
### Features

buildSrc/src/main/java/Config.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ object Config {
163163
val apolloKotlin = "com.apollographql.apollo3:apollo-runtime:3.8.2"
164164
val apolloKotlin4 = "com.apollographql.apollo:apollo-runtime:4.1.1"
165165

166-
val sentryNativeNdk = "io.sentry:sentry-native-ndk:0.8.3"
166+
val sentryNativeNdk = "io.sentry:sentry-native-ndk:0.8.4"
167167

168168
object OpenTelemetry {
169169
val otelVersion = "1.44.1"

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,32 @@
22

33
import io.opentelemetry.context.ContextStorage;
44
import io.opentelemetry.context.ContextStorageProvider;
5+
import java.util.Iterator;
6+
import java.util.ServiceLoader;
7+
import org.jetbrains.annotations.NotNull;
58

69
public final class SentryContextStorageProvider implements ContextStorageProvider {
710
@Override
811
public ContextStorage get() {
9-
return new SentryContextStorage(new SentryOtelThreadLocalStorage());
12+
return new SentryContextStorage(findStorageToWrap());
13+
}
14+
15+
private @NotNull ContextStorage findStorageToWrap() {
16+
try {
17+
ServiceLoader<ContextStorageProvider> serviceLoader =
18+
ServiceLoader.load(ContextStorageProvider.class);
19+
Iterator<ContextStorageProvider> iterator = serviceLoader.iterator();
20+
while (iterator.hasNext()) {
21+
ContextStorageProvider contextStorageProvider = iterator.next();
22+
if (!(contextStorageProvider instanceof SentryContextStorageProvider)) {
23+
return contextStorageProvider.get();
24+
}
25+
}
26+
} catch (Throwable t) {
27+
// ignore and use fallback
28+
}
29+
30+
// using default / fallback storage
31+
return new SentryOtelThreadLocalStorage();
1032
}
1133
}

0 commit comments

Comments
 (0)