Skip to content

Commit 8a99fee

Browse files
authored
fix rsocket#1101 memory leaks in RSocketRequesterTracingObservationHandler
Signed-off-by: kevin <[email protected]>
1 parent 6d07389 commit 8a99fee

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

rsocket-micrometer/src/main/java/io/rsocket/micrometer/observation/RSocketRequesterTracingObservationHandler.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,17 @@
2323
import io.micrometer.tracing.handler.TracingObservationHandler;
2424
import io.micrometer.tracing.internal.EncodingUtils;
2525
import io.micrometer.tracing.propagation.Propagator;
26+
import io.netty.buffer.ByteBufAllocator;
2627
import io.netty.buffer.CompositeByteBuf;
2728
import io.rsocket.Payload;
29+
import io.rsocket.metadata.CompositeMetadataCodec;
2830
import io.rsocket.metadata.TracingMetadataCodec;
29-
import java.util.HashSet;
31+
import io.rsocket.metadata.WellKnownMimeType;
3032
import org.slf4j.Logger;
3133
import org.slf4j.LoggerFactory;
3234

35+
import java.util.HashSet;
36+
3337
public class RSocketRequesterTracingObservationHandler
3438
implements TracingObservationHandler<RSocketContext> {
3539
private static final Logger log =
@@ -115,17 +119,22 @@ private void injectDefaultZipkinRSocketHeaders(
115119
long[] spanId = EncodingUtils.fromString(traceContext.spanId());
116120
long[] parentSpanId = EncodingUtils.fromString(traceContext.parentId());
117121
boolean isTraceId128Bit = traceIds.length == 2;
122+
final ByteBufAllocator allocator = newMetadata.alloc();
118123
if (isTraceId128Bit) {
119-
TracingMetadataCodec.encode128(
120-
newMetadata.alloc(),
124+
CompositeMetadataCodec.encodeAndAddMetadata(newMetadata,
125+
allocator, WellKnownMimeType.MESSAGE_RSOCKET_TRACING_ZIPKIN,
126+
TracingMetadataCodec.encode128(
127+
allocator,
121128
traceIds[0],
122129
traceIds[1],
123130
spanId[0],
124131
EncodingUtils.fromString(traceContext.parentId())[0],
125-
flags);
132+
flags));
126133
} else {
127-
TracingMetadataCodec.encode64(
128-
newMetadata.alloc(), traceIds[0], spanId[0], parentSpanId[0], flags);
134+
CompositeMetadataCodec.encodeAndAddMetadata(newMetadata,
135+
allocator, WellKnownMimeType.MESSAGE_RSOCKET_TRACING_ZIPKIN,
136+
TracingMetadataCodec.encode64(
137+
allocator, traceIds[0], spanId[0], parentSpanId[0], flags));
129138
}
130139
}
131140
}

0 commit comments

Comments
 (0)