Set spanId in TracingResponderRSocketProxy (#1986)

also respect traceIdHigh and debug flag in TracingMetadata
This commit is contained in:
Toshiaki Maki
2021-06-28 17:38:46 +09:00
committed by GitHub
parent d353e66556
commit 4f6eb04527

View File

@@ -152,8 +152,16 @@ public class TracingResponderRSocketProxy extends RSocketProxy {
if (extract != null) {
TracingMetadata tracingMetadata = TracingMetadataCodec.decode(extract);
Span.Builder builder = this.tracer.spanBuilder();
String traceId = EncodingUtils.fromLong(tracingMetadata.traceId());
long traceIdHigh = tracingMetadata.traceIdHigh();
if (traceIdHigh != 0L) {
// ExtendedTraceId
traceId = EncodingUtils.fromLong(traceIdHigh) + traceId;
}
TraceContext.Builder parentBuilder = this.tracer.traceContextBuilder()
.sampled(tracingMetadata.isSampled()).traceId(EncodingUtils.fromLong(tracingMetadata.traceId()))
.sampled(tracingMetadata.isDebug() || tracingMetadata.isSampled())
.traceId(traceId)
.spanId(EncodingUtils.fromLong(tracingMetadata.spanId()))
.parentId(EncodingUtils.fromLong(tracingMetadata.parentId()));
return builder.setParent(parentBuilder.build());
}