Skip to content

Commit bd72002

Browse files
fix(profiling): Disable process context sharing when using native image (#9647)
1 parent 088156e commit bd72002

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/AnnotationSubstitutionProcessorInstrumentation.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public void methodAdvice(MethodTransformer transformer) {
3636
@Override
3737
public String[] helperClassNames() {
3838
return new String[] {
39+
packageName + ".Target_com_datadog_profiling_agent_ProcessContext",
3940
packageName + ".Target_datadog_jctools_util_UnsafeRefArrayAccess",
4041
packageName + ".Target_org_datadog_jmxfetch_App",
4142
packageName + ".Target_org_datadog_jmxfetch_Status",
@@ -50,6 +51,7 @@ public String[] muzzleIgnoredClassNames() {
5051
"jdk.vm.ci.meta.ResolvedJavaType",
5152
"jdk.vm.ci.meta.ResolvedJavaField",
5253
// ignore helper class names as usual
54+
packageName + ".Target_com_datadog_profiling_agent_ProcessContext",
5355
packageName + ".Target_datadog_jctools_util_UnsafeRefArrayAccess",
5456
packageName + ".Target_org_datadog_jmxfetch_App",
5557
packageName + ".Target_org_datadog_jmxfetch_Status",
@@ -60,6 +62,7 @@ public String[] muzzleIgnoredClassNames() {
6062
public static class FindTargetClassesAdvice {
6163
@Advice.OnMethodExit(suppress = Throwable.class)
6264
public static void onExit(@Advice.Return(readOnly = false) List<Class<?>> result) {
65+
result.add(Target_com_datadog_profiling_agent_ProcessContext.class);
6366
result.add(Target_datadog_jctools_util_UnsafeRefArrayAccess.class);
6467
result.add(Target_org_datadog_jmxfetch_App.class);
6568
result.add(Target_org_datadog_jmxfetch_Status.class);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package datadog.trace.instrumentation.graal.nativeimage;
2+
3+
import com.oracle.svm.core.annotate.Substitute;
4+
import com.oracle.svm.core.annotate.TargetClass;
5+
import datadog.trace.bootstrap.config.provider.ConfigProvider;
6+
7+
@TargetClass(className = "com.datadog.profiling.agent.ProcessContext")
8+
public final class Target_com_datadog_profiling_agent_ProcessContext {
9+
@Substitute
10+
public static void register(ConfigProvider configProvider) {
11+
// This method references com.datadoghq.profiler.OTelContext which is not available
12+
// during native image build. OTelContext is part of the ddprof native library that's
13+
// loaded at runtime. For native image builds, profiling context registration is disabled.
14+
// No-op during native image build.
15+
}
16+
}

0 commit comments

Comments
 (0)