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(