diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 0bf4669869..081ca8aae2 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -29,6 +29,7 @@ * Remove abandon logic in MergableBufferedData, which caused unexpected no-update. * Fix miss set `LastUpdateTimestamp` that caused the metrics session to expire. * Rename MAL rule `spring-sleuth.yaml` to `spring-micrometer.yaml`. +* Fix memory leak in Zipkin API. #### UI diff --git a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/handler/ZipkinSpanHTTPHandler.java b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/handler/ZipkinSpanHTTPHandler.java index 02dc0f8a81..2acaa9d848 100644 --- a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/handler/ZipkinSpanHTTPHandler.java +++ b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/handler/ZipkinSpanHTTPHandler.java @@ -100,10 +100,11 @@ public class ZipkinSpanHTTPHandler { final HttpRequest req) { final HistogramMetrics.Timer timer = histogram.createTimer(); final HttpResponse response = HttpResponse.from(req.aggregate().thenApply(request -> { - final HttpData httpData = UnzippingBytesRequestConverter.convertRequest(ctx, request); - final List spanList = decoder.decodeList(httpData.byteBuf().nioBuffer()); - spanForward.send(spanList); - return HttpResponse.of(HttpStatus.OK); + try (final HttpData httpData = UnzippingBytesRequestConverter.convertRequest(ctx, request)) { + final List spanList = decoder.decodeList(httpData.byteBuf().nioBuffer()); + spanForward.send(spanList); + return HttpResponse.of(HttpStatus.OK); + } })); response.whenComplete().handle((unused, throwable) -> { if (nonNull(throwable)) {