This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new c9e51d625e [ISSUE #10381] Make HashedWheelTimer parameters
configurable in QueueLevelConsumerOrderInfoLockManager (#10382)
c9e51d625e is described below
commit c9e51d625e1d84d878d35e1bd3ad5edbf2392225
Author: Quan <[email protected]>
AuthorDate: Wed May 27 19:02:59 2026 +0800
[ISSUE #10381] Make HashedWheelTimer parameters configurable in
QueueLevelConsumerOrderInfoLockManager (#10382)
- Add popOrderLockTimerTickMs and popOrderLockTimerTicksPerWheel to
BrokerConfig
- Replace hardcoded TIMER_TICK_MS constant with configurable values from
BrokerConfig
- Remove unused field consumerOrderInfoManager
- Default values (tickMs=100, ticksPerWheel=512) preserve backward
compatibility
---
.../QueueLevelConsumerOrderInfoLockManager.java | 6 +++---
.../broker/processor/LiteManagerProcessorTest.java | 1 +
.../org/apache/rocketmq/common/BrokerConfig.java | 20 ++++++++++++++++++++
3 files changed, 24 insertions(+), 3 deletions(-)
diff --git
a/broker/src/main/java/org/apache/rocketmq/broker/pop/orderly/QueueLevelConsumerOrderInfoLockManager.java
b/broker/src/main/java/org/apache/rocketmq/broker/pop/orderly/QueueLevelConsumerOrderInfoLockManager.java
index 08569977e0..7340e4beb5 100644
---
a/broker/src/main/java/org/apache/rocketmq/broker/pop/orderly/QueueLevelConsumerOrderInfoLockManager.java
+++
b/broker/src/main/java/org/apache/rocketmq/broker/pop/orderly/QueueLevelConsumerOrderInfoLockManager.java
@@ -35,18 +35,18 @@ import org.apache.rocketmq.logging.org.slf4j.LoggerFactory;
public class QueueLevelConsumerOrderInfoLockManager {
private static final Logger POP_LOGGER =
LoggerFactory.getLogger(LoggerName.ROCKETMQ_POP_LOGGER_NAME);
- private ConsumerOrderInfoManager consumerOrderInfoManager;
private final BrokerController brokerController;
private final Map<Key, Timeout> timeoutMap = new ConcurrentHashMap<>();
private final Timer timer;
- private static final int TIMER_TICK_MS = 100;
public QueueLevelConsumerOrderInfoLockManager(BrokerController
brokerController) {
this.brokerController = brokerController;
+ long tickMs =
brokerController.getBrokerConfig().getPopOrderLockTimerTickMs();
+ int ticksPerWheel =
brokerController.getBrokerConfig().getPopOrderLockTimerTicksPerWheel();
this.timer = new HashedWheelTimer(
new ThreadFactoryImpl("ConsumerOrderInfoLockManager_"),
- TIMER_TICK_MS, TimeUnit.MILLISECONDS);
+ tickMs, TimeUnit.MILLISECONDS, ticksPerWheel);
}
/**
diff --git
a/broker/src/test/java/org/apache/rocketmq/broker/processor/LiteManagerProcessorTest.java
b/broker/src/test/java/org/apache/rocketmq/broker/processor/LiteManagerProcessorTest.java
index 5518a2fa10..24fe1b9f7b 100644
---
a/broker/src/test/java/org/apache/rocketmq/broker/processor/LiteManagerProcessorTest.java
+++
b/broker/src/test/java/org/apache/rocketmq/broker/processor/LiteManagerProcessorTest.java
@@ -146,6 +146,7 @@ public class LiteManagerProcessorTest {
when(brokerController.getLiteEventDispatcher()).thenReturn(liteEventDispatcher);
when(brokerController.getPopLiteMessageProcessor()).thenReturn(popLiteMessageProcessor);
when(brokerController.getConsumerOffsetManager()).thenReturn(consumerOffsetManager);
+ when(brokerController.getBrokerConfig()).thenReturn(new
BrokerConfig());
ConsumerOrderInfoManager consumerOrderInfoManager = new
MemoryConsumerOrderInfoManager(brokerController);
when(popLiteMessageProcessor.getConsumerOrderInfoManager()).thenReturn(consumerOrderInfoManager);
diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
index 08e27a20ee..c97ff2fc29 100644
--- a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
+++ b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
@@ -572,6 +572,10 @@ public class BrokerConfig extends BrokerIdentity {
private int liteLagLatencyTopK = 50;
+ // HashedWheelTimer config for pop order lock manager
+ private long popOrderLockTimerTickMs = 100;
+ private int popOrderLockTimerTicksPerWheel = 512;
+
public String getConfigBlackList() {
return configBlackList;
}
@@ -2489,6 +2493,22 @@ public class BrokerConfig extends BrokerIdentity {
this.liteLagLatencyTopK = liteLagLatencyTopK;
}
+ public long getPopOrderLockTimerTickMs() {
+ return popOrderLockTimerTickMs;
+ }
+
+ public void setPopOrderLockTimerTickMs(long popOrderLockTimerTickMs) {
+ this.popOrderLockTimerTickMs = popOrderLockTimerTickMs;
+ }
+
+ public int getPopOrderLockTimerTicksPerWheel() {
+ return popOrderLockTimerTicksPerWheel;
+ }
+
+ public void setPopOrderLockTimerTicksPerWheel(int
popOrderLockTimerTicksPerWheel) {
+ this.popOrderLockTimerTicksPerWheel = popOrderLockTimerTicksPerWheel;
+ }
+
public boolean isUseMessageFilterForNotification() {
return useMessageFilterForNotification;
}