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 d48f273ab94c60b6948d114fe9613071e260397c..448c54b8471b1810c63b97cc792b246c4e2fe174 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 24b92c0d417c9128fbb98b1b1e9b56f742482e25..9413137a54ca0f37b5bae75a38881aee3eb8c9a7 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(); + } } }