Skip to content

Commit 455305a

Browse files
authored
[ISSUE #9813] Fix buffer fetch thread pool starvation in tiered storage (#9818)
1 parent 736d2a8 commit 455305a

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

tieredstore/src/main/java/org/apache/rocketmq/tieredstore/core/MessageStoreFetcherImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,12 @@ public CompletableFuture<GetMessageResult> getMessageFromCacheAsync(
210210
// Pop revive will cause a large number of random reads,
211211
// so the amount of pre-fetch message num needs to be reduced.
212212
int fetchSize = maxCount == 1 ? 32 : storeConfig.getReadAheadMessageCountThreshold();
213+
214+
// In the current design, when the min offset cache expires,
215+
// this method may trigger an RPC call, causing buffer fetch thread starvation
213216
return fetchMessageThenPutToCache(flatFile, queueOffset, fetchSize)
214-
.thenApply(maxOffset -> getMessageFromCache(flatFile, queueOffset, maxCount, messageFilter));
217+
.thenApplyAsync(maxOffset -> getMessageFromCache(flatFile, queueOffset, maxCount, messageFilter),
218+
messageStore.getStoreExecutor().commonExecutor);
215219
}
216220

217221
public CompletableFuture<GetMessageResultExt> getMessageFromTieredStoreAsync(

0 commit comments

Comments
 (0)