This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 210c374976 Fix memory leak in Zipkin API (#10126)
210c374976 is described below

commit 210c37497676a488785d9bb313551d57eabc52b7
Author: kezhenxu94 <[email protected]>
AuthorDate: Wed Dec 7 22:25:03 2022 +0800

    Fix memory leak in Zipkin API (#10126)
---
 docs/en/changes/changes.md                                       | 1 +
 .../server/receiver/zipkin/handler/ZipkinSpanHTTPHandler.java    | 9 +++++----
 2 files changed, 6 insertions(+), 4 deletions(-)

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<Span> spanList = 
decoder.decodeList(httpData.byteBuf().nioBuffer());
-            spanForward.send(spanList);
-            return HttpResponse.of(HttpStatus.OK);
+            try (final HttpData httpData = 
UnzippingBytesRequestConverter.convertRequest(ctx, request)) {
+                final List<Span> spanList = 
decoder.decodeList(httpData.byteBuf().nioBuffer());
+                spanForward.send(spanList);
+                return HttpResponse.of(HttpStatus.OK);
+            }
         }));
         response.whenComplete().handle((unused, throwable) -> {
             if (nonNull(throwable)) {

Reply via email to