Skip to content

Commit 5945b1d

Browse files
authored
Capture pulsar message id earlier (#18803)
1 parent c5b1a22 commit 5945b1d

3 files changed

Lines changed: 16 additions & 16 deletions

File tree

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/telemetry/PulsarMessagingAttributesGetter.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.opentelemetry.instrumentation.api.incubator.semconv.messaging.MessagingAttributesGetter;
1212
import java.util.List;
1313
import javax.annotation.Nullable;
14-
import org.apache.pulsar.client.api.Message;
1514
import org.apache.pulsar.common.naming.TopicName;
1615

1716
final class PulsarMessagingAttributesGetter
@@ -64,12 +63,7 @@ public Long getMessageEnvelopeSize(PulsarRequest request) {
6463
@Nullable
6564
@Override
6665
public String getMessageId(PulsarRequest request, @Nullable Void response) {
67-
Message<?> message = request.getMessage();
68-
if (message.getMessageId() != null) {
69-
return message.getMessageId().toString();
70-
}
71-
72-
return null;
66+
return request.getMessageId();
7367
}
7468

7569
@Nullable

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/telemetry/PulsarRequest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
import io.opentelemetry.javaagent.instrumentation.pulsar.v2_8.UrlParser.UrlData;
1212
import javax.annotation.Nullable;
1313
import org.apache.pulsar.client.api.Message;
14+
import org.apache.pulsar.client.api.MessageId;
1415

1516
public class PulsarRequest extends BasePulsarRequest {
1617
private final Message<?> message;
18+
private final String messageId;
1719

1820
public static PulsarRequest create(Message<?> message) {
1921
return new PulsarRequest(message, message.getTopicName(), null);
@@ -34,9 +36,22 @@ public static PulsarRequest create(Message<?> message, ProducerData producerData
3436
private PulsarRequest(Message<?> message, String destination, @Nullable UrlData urlData) {
3537
super(destination, urlData);
3638
this.message = message;
39+
// for producer spans message id is not available when the PulsarRequest is created, so we will
40+
// try to get it later when it's available
41+
MessageId id = message.getMessageId();
42+
this.messageId = id != null ? id.toString() : null;
3743
}
3844

3945
public Message<?> getMessage() {
4046
return message;
4147
}
48+
49+
@Nullable
50+
public String getMessageId() {
51+
if (messageId != null) {
52+
return messageId;
53+
}
54+
MessageId id = message.getMessageId();
55+
return id != null ? id.toString() : null;
56+
}
4257
}

instrumentation/pulsar/pulsar-2.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/pulsar/v2_8/telemetry/PulsarSingletons.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
package io.opentelemetry.javaagent.instrumentation.pulsar.v2_8.telemetry;
77

8-
import static java.util.logging.Level.FINE;
9-
108
import io.opentelemetry.api.GlobalOpenTelemetry;
119
import io.opentelemetry.api.OpenTelemetry;
1210
import io.opentelemetry.context.Context;
@@ -32,14 +30,12 @@
3230
import io.opentelemetry.javaagent.instrumentation.pulsar.v2_8.VirtualFieldStore;
3331
import java.util.List;
3432
import java.util.concurrent.CompletableFuture;
35-
import java.util.logging.Logger;
3633
import javax.annotation.Nullable;
3734
import org.apache.pulsar.client.api.Consumer;
3835
import org.apache.pulsar.client.api.Message;
3936
import org.apache.pulsar.client.api.Messages;
4037

4138
public class PulsarSingletons {
42-
private static final Logger logger = Logger.getLogger(PulsarSingletons.class.getName());
4339

4440
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.pulsar-2.8";
4541

@@ -60,8 +56,6 @@ public class PulsarSingletons {
6056
private static final Instrumenter<PulsarRequest, Void> producerInstrumenter =
6157
createProducerInstrumenter();
6258

63-
private static final boolean debug = Boolean.getBoolean("io.opentelemetry.pulsar-2.8.debug");
64-
6559
public static Instrumenter<PulsarRequest, Void> consumerProcessInstrumenter() {
6660
return consumerProcessInstrumenter;
6761
}
@@ -169,9 +163,6 @@ public static Context startAndEndConsumerReceive(
169163
if (message == null) {
170164
return null;
171165
}
172-
if (debug && message.getMessageId() == null) {
173-
logger.log(FINE, "Null message id: " + message, new Exception());
174-
}
175166
String brokerUrl = VirtualFieldStore.extract(consumer);
176167
PulsarRequest request = PulsarRequest.create(message, brokerUrl);
177168
if (!consumerReceiveInstrumenter.shouldStart(parent, request)) {

0 commit comments

Comments
 (0)