From 89549c0183b1f387d7b0f03f5fc14ce2836f1790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Wed, 30 Jun 2021 11:33:07 +0800 Subject: [PATCH] Fix the queue initial size is not set by max batch size accordingly (#7204) --- .../oap/server/core/storage/PersistenceTimer.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java index a3f06979cc..aaafc0674a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java @@ -29,7 +29,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import lombok.Getter; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.apm.util.RunnableWithExceptionProtection; import org.apache.skywalking.oap.server.core.CoreModuleConfig; @@ -203,16 +202,18 @@ public enum PersistenceTimer { } } - @RequiredArgsConstructor static class DefaultBlockingBatchQueue implements BlockingBatchQueue { - @Getter private final int maxBatchSize; - + private final List elementData; @Getter private boolean inAppendingMode = true; - private final List elementData = new ArrayList<>(50000 * 3); + public DefaultBlockingBatchQueue(final int maxBatchSize) { + this.maxBatchSize = maxBatchSize; + // Use the maxBatchSize * 3 as the initial queue size to avoid ArrayList#grow + this.elementData = new ArrayList<>(maxBatchSize * 3); + } @Override public void offer(List elements) { -- GitLab