From 19c121ab8d96332a96007a885f0ad80c2af0a527 Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Fri, 4 Dec 2020 22:57:06 +0900 Subject: [PATCH] Initialize Recycler.INITIAL_CAPACITY before invoking InternalLogger.debug() (#10836) Motivation: If Log4J2's `Filter` creates `Recycler.Stack` somehow, `Recycler.Stack()` will see uninitialized `Recycler.INITIAL_CAPACITY`. This has been raised originally in https://github.com/micrometer-metrics/micrometer/issues/2369. Modification: This PR changes to initialize `Recycler.INITIAL_CAPACITY` before invoking `InternalLogger.debug()` to avoid it. Result: Fixes the problem described in the "Motivation" section. --- common/src/main/java/io/netty/util/Recycler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/io/netty/util/Recycler.java b/common/src/main/java/io/netty/util/Recycler.java index 3b88a71679..0b65f45297 100644 --- a/common/src/main/java/io/netty/util/Recycler.java +++ b/common/src/main/java/io/netty/util/Recycler.java @@ -86,6 +86,8 @@ public abstract class Recycler { RATIO = max(0, SystemPropertyUtil.getInt("io.netty.recycler.ratio", 8)); DELAYED_QUEUE_RATIO = max(0, SystemPropertyUtil.getInt("io.netty.recycler.delayedQueue.ratio", RATIO)); + INITIAL_CAPACITY = min(DEFAULT_MAX_CAPACITY_PER_THREAD, 256); + if (logger.isDebugEnabled()) { if (DEFAULT_MAX_CAPACITY_PER_THREAD == 0) { logger.debug("-Dio.netty.recycler.maxCapacityPerThread: disabled"); @@ -101,8 +103,6 @@ public abstract class Recycler { logger.debug("-Dio.netty.recycler.delayedQueue.ratio: {}", DELAYED_QUEUE_RATIO); } } - - INITIAL_CAPACITY = min(DEFAULT_MAX_CAPACITY_PER_THREAD, 256); } private final int maxCapacityPerThread;