Skip to content

Commit 7e9aff8

Browse files
piochelepiotrclaude
andcommitted
Fix context store type mismatch in producer context propagation advices
The ContextPropagationAdvice classes were still using InstrumentationContext.get(Metadata.class, String.class) after the context store value type was changed from String to MetadataState, causing an instrumentation error at runtime. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent fb55014 commit 7e9aff8

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

dd-java-agent/instrumentation/kafka/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerInstrumentation.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,9 @@ public static void onEnter(
200200
@Advice.Argument(value = 0, readOnly = false) ProducerRecord record) {
201201
AgentSpan span = activeSpan();
202202
if (span == null) return;
203-
String clusterId = InstrumentationContext.get(Metadata.class, String.class).get(metadata);
203+
MetadataState metadataState =
204+
InstrumentationContext.get(Metadata.class, MetadataState.class).get(metadata);
205+
String clusterId = metadataState != null ? metadataState.clusterId : null;
204206
TextMapInjectAdapterInterface setter = NoopTextMapInjectAdapter.NOOP_SETTER;
205207
// Do not inject headers for batch versions below 2
206208
// This is how similar check is being done in Kafka client itself:

dd-java-agent/instrumentation/kafka/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/ProducerContextPropagationAdvice.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import datadog.trace.api.datastreams.DataStreamsTags;
1919
import datadog.trace.bootstrap.InstrumentationContext;
2020
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
21+
import datadog.trace.instrumentation.kafka_common.MetadataState;
2122
import net.bytebuddy.asm.Advice;
2223
import org.apache.kafka.clients.Metadata;
2324
import org.apache.kafka.clients.producer.ProducerRecord;
@@ -31,7 +32,9 @@ public static void onEnter(
3132
@Advice.Argument(value = 0, readOnly = false) ProducerRecord record) {
3233
AgentSpan span = activeSpan();
3334
if (span == null) return;
34-
String clusterId = InstrumentationContext.get(Metadata.class, String.class).get(metadata);
35+
MetadataState metadataState =
36+
InstrumentationContext.get(Metadata.class, MetadataState.class).get(metadata);
37+
String clusterId = metadataState != null ? metadataState.clusterId : null;
3538
TextMapInjectAdapterInterface setter = NoopTextMapInjectAdapter.NOOP_SETTER;
3639
// Please note that the minimum magic for kafka 3.8+ is 2 so there is no need to check this
3740
if (Config.get().isKafkaClientPropagationEnabled()

0 commit comments

Comments
 (0)