This is an automated email from the ASF dual-hosted git repository.

lollipop 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 455305a9d4 [ISSUE #9813] Fix buffer fetch thread pool starvation in 
tiered storage (#9818)
455305a9d4 is described below

commit 455305a9d43bd87889ee3a37f462e439070a42e3
Author: lizhimins <[email protected]>
AuthorDate: Fri Nov 7 11:51:34 2025 +0800

    [ISSUE #9813] Fix buffer fetch thread pool starvation in tiered storage 
(#9818)
---
 .../apache/rocketmq/tieredstore/core/MessageStoreFetcherImpl.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/core/MessageStoreFetcherImpl.java
 
b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/core/MessageStoreFetcherImpl.java
index 9e5ab01d3b..273ad91963 100644
--- 
a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/core/MessageStoreFetcherImpl.java
+++ 
b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/core/MessageStoreFetcherImpl.java
@@ -210,8 +210,12 @@ public class MessageStoreFetcherImpl implements 
MessageStoreFetcher {
         // Pop revive will cause a large number of random reads,
         // so the amount of pre-fetch message num needs to be reduced.
         int fetchSize = maxCount == 1 ? 32 : 
storeConfig.getReadAheadMessageCountThreshold();
+
+        // In the current design, when the min offset cache expires,
+        // this method may trigger an RPC call, causing buffer fetch thread 
starvation
         return fetchMessageThenPutToCache(flatFile, queueOffset, fetchSize)
-            .thenApply(maxOffset -> getMessageFromCache(flatFile, queueOffset, 
maxCount, messageFilter));
+            .thenApplyAsync(maxOffset -> getMessageFromCache(flatFile, 
queueOffset, maxCount, messageFilter),
+                messageStore.getStoreExecutor().commonExecutor);
     }
 
     public CompletableFuture<GetMessageResultExt> 
getMessageFromTieredStoreAsync(

Reply via email to