File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed
dd-java-agent/agent-otel/otel-bootstrap
src/main/java/datadog/trace/bootstrap/otel/context Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -72,6 +72,7 @@ shadowJar {
7272 include ' io/opentelemetry/api/**'
7373 exclude ' io/opentelemetry/api/incubator/**'
7474 include ' io/opentelemetry/context/**'
75+ exclude ' io/opentelemetry/context/StrictContextStorage*'
7576 exclude ' io/opentelemetry/context/internal/shaded/**'
7677 include ' io/opentelemetry/semconv/**'
7778 include ' io/opentelemetry/instrumentation/api/**'
Original file line number Diff line number Diff line change 1+ package datadog .trace .bootstrap .otel .context ;
2+
3+ import io .opentelemetry .context .Context ;
4+ import io .opentelemetry .context .ContextStorage ;
5+ import io .opentelemetry .context .Scope ;
6+
7+ /**
8+ * Replaces original class with a simple wrapper to avoid missing reference issue on native-image.
9+ *
10+ * <p>The original class is only used for testing purposes when a particular property is set, but
11+ * native-image follows the reference in {@code LazyStorage} and attempts to load everything it
12+ * touches, including some types we are not embedding. This simple replacement fixes this issue.
13+ */
14+ final class StrictContextStorage implements ContextStorage {
15+ private final ContextStorage delegate ;
16+
17+ static StrictContextStorage create (ContextStorage delegate ) {
18+ return new StrictContextStorage (delegate );
19+ }
20+
21+ public StrictContextStorage (ContextStorage delegate ) {
22+ this .delegate = delegate ;
23+ }
24+
25+ @ Override
26+ public Scope attach (Context context ) {
27+ return delegate .attach (context );
28+ }
29+
30+ @ Override
31+ public Context current () {
32+ return delegate .current ();
33+ }
34+ }
You can’t perform that action at this time.
0 commit comments