Skip to content

Commit 9c5c8ab

Browse files
authored
Swap original StrictContextStorage with simple wrapper to avoid missing reference issue on native-image (#7201)
1 parent f8dbe2b commit 9c5c8ab

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

dd-java-agent/agent-otel/otel-bootstrap/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

0 commit comments

Comments
 (0)