-
-
Notifications
You must be signed in to change notification settings - Fork 468
Expand file tree
/
Copy pathSentryContextStorageProvider.java
More file actions
33 lines (29 loc) · 1.08 KB
/
SentryContextStorageProvider.java
File metadata and controls
33 lines (29 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package io.sentry.opentelemetry;
import io.opentelemetry.context.ContextStorage;
import io.opentelemetry.context.ContextStorageProvider;
import java.util.Iterator;
import java.util.ServiceLoader;
import org.jetbrains.annotations.NotNull;
public final class SentryContextStorageProvider implements ContextStorageProvider {
@Override
public ContextStorage get() {
return new SentryContextStorage(findStorageToWrap());
}
private @NotNull ContextStorage findStorageToWrap() {
try {
ServiceLoader<ContextStorageProvider> serviceLoader =
ServiceLoader.load(ContextStorageProvider.class);
Iterator<ContextStorageProvider> iterator = serviceLoader.iterator();
while (iterator.hasNext()) {
ContextStorageProvider contextStorageProvider = iterator.next();
if (!(contextStorageProvider instanceof SentryContextStorageProvider)) {
return contextStorageProvider.get();
}
}
} catch (Throwable t) {
// ignore and use fallback
}
// using default / fallback storage
return new SentryOtelThreadLocalStorage();
}
}