From a2eddd699e72aa76e7e510289258d0a0c3cfe2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Mon, 4 May 2020 10:46:11 +0800 Subject: [PATCH] Fix the cache unclear bug. (#4739) * Fix the cache unclear bug. * Update LimitedSizeBufferedData.java Co-authored-by: kezhenxu94 --- .../core/analysis/data/LimitedSizeBufferedData.java | 10 +++++++--- .../core/analysis/data/MergableBufferedData.java | 6 +++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java index d48f273ab9..448c54b847 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java @@ -74,8 +74,12 @@ public class LimitedSizeBufferedData read() { - List collection = new ArrayList<>(); - data.values().forEach(e -> e.forEach(collection::add)); - return collection; + try { + List collection = new ArrayList<>(); + data.values().forEach(collection::addAll); + return collection; + } finally { + data.clear(); + } } } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java index 24b92c0d41..9413137a54 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java @@ -57,6 +57,10 @@ public class MergableBufferedData implements BufferedDa @Override public List read() { - return buffer.values().stream().collect(Collectors.toList()); + try { + return buffer.values().stream().collect(Collectors.toList()); + } finally { + buffer.clear(); + } } } -- GitLab