Fix NPE in RocketMQ instrumentation (#4901)
* Fix NPE in RocketMQ instrumentation * fix tests * add exception * Changed the condition a bit
This commit is contained in:
parent
98d3f88ab8
commit
e8e6813f97
|
@ -61,9 +61,11 @@ class RockerMqConsumerAttributeExtractor extends MessagingAttributesExtractor<Me
|
|||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected Long messagePayloadSize(MessageExt request) {
|
||||
return (long) request.getBody().length;
|
||||
byte[] body = request.getBody();
|
||||
return body == null ? null : (long) body.length;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
|
@ -10,6 +10,8 @@ import io.opentelemetry.instrumentation.api.instrumenter.messaging.MessagingAttr
|
|||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.rocketmq.client.hook.SendMessageContext;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
import org.apache.rocketmq.common.message.Message;
|
||||
|
||||
class RockerMqProducerAttributeExtractor
|
||||
extends MessagingAttributesExtractor<SendMessageContext, Void> {
|
||||
|
@ -28,9 +30,11 @@ class RockerMqProducerAttributeExtractor
|
|||
return SemanticAttributes.MessagingDestinationKindValues.TOPIC;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected String destination(SendMessageContext sendMessageContext) {
|
||||
return sendMessageContext.getMessage().getTopic();
|
||||
Message message = sendMessageContext.getMessage();
|
||||
return message == null ? null : message.getTopic();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -77,6 +81,7 @@ class RockerMqProducerAttributeExtractor
|
|||
@Nullable
|
||||
@Override
|
||||
protected String messageId(SendMessageContext request, @Nullable Void unused) {
|
||||
return request.getSendResult().getMsgId();
|
||||
SendResult sendResult = request.getSendResult();
|
||||
return sendResult == null ? null : sendResult.getMsgId();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,9 @@ class RockerMqProducerExperimentalAttributeExtractor
|
|||
|
||||
@Override
|
||||
public void onStart(AttributesBuilder attributes, SendMessageContext request) {
|
||||
set(attributes, MESSAGING_ROCKETMQ_TAGS, request.getMessage().getTags());
|
||||
if (request.getMessage() != null) {
|
||||
set(attributes, MESSAGING_ROCKETMQ_TAGS, request.getMessage().getTags());
|
||||
}
|
||||
set(attributes, MESSAGING_ROCKETMQ_BROKER_ADDRESS, request.getBrokerAddr());
|
||||
}
|
||||
|
||||
|
|
|
@ -40,9 +40,10 @@ final class TracingSendMessageHookImpl implements SendMessageHook {
|
|||
if (context == null) {
|
||||
return;
|
||||
}
|
||||
if (context.getMqTraceContext() instanceof Context) {
|
||||
if (context.getMqTraceContext() instanceof Context
|
||||
&& (context.getSendResult() != null || context.getException() != null)) {
|
||||
Context otelContext = (Context) context.getMqTraceContext();
|
||||
instrumenter.end(otelContext, context, null, null);
|
||||
instrumenter.end(otelContext, context, null, context.getException());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue