mirror of
https://github.com/apache/rocketmq.git
synced 2026-10-30 18:44:38 +08:00
[ISSUE #6648]: Fix the bug that not all message fetch requests are processed via TieredStorage when level is FORCE (#6649)
* fix(tieredstorage): fix the bug that not all message fetch request is processed via tieredStorage when enable FORCE 1. fix the bug that not all message fetch request is processed via tieredStorage when enable FORCE * style(tieredstorage): use rmq code style 1. use rmq code style * feat(tieredstorage): add more comments for `TieredStorageLevel` 1. add more comments for `TieredStorageLevel`
This commit is contained in:
@@ -99,6 +99,11 @@ public class TieredMessageStore extends AbstractPluginMessageStore {
|
||||
|
||||
public boolean viaTieredStorage(String topic, int queueId, long offset, int batchSize) {
|
||||
TieredMessageStoreConfig.TieredStorageLevel deepStorageLevel = storeConfig.getTieredStorageLevel();
|
||||
|
||||
if (deepStorageLevel.check(TieredMessageStoreConfig.TieredStorageLevel.FORCE)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!deepStorageLevel.isEnable()) {
|
||||
return false;
|
||||
}
|
||||
@@ -122,7 +127,7 @@ public class TieredMessageStore extends AbstractPluginMessageStore {
|
||||
&& !next.checkInMemByConsumeOffset(topic, queueId, offset, batchSize)) {
|
||||
return true;
|
||||
}
|
||||
return deepStorageLevel.check(TieredMessageStoreConfig.TieredStorageLevel.FORCE);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+18
@@ -24,10 +24,28 @@ public class TieredMessageStoreConfig {
|
||||
private String brokerName = localHostName();
|
||||
private String brokerClusterName = "DefaultCluster";
|
||||
private TieredStorageLevel tieredStorageLevel = TieredStorageLevel.NOT_IN_DISK;
|
||||
|
||||
/**
|
||||
* All fetch requests are judged against this level first,
|
||||
* and if the message cannot be read from the TiredMessageStore,
|
||||
* these requests will still go to the next store for fallback processing.
|
||||
*/
|
||||
public enum TieredStorageLevel {
|
||||
/**
|
||||
* Disable tiered storage, all fetch request will be handled by default message store.
|
||||
*/
|
||||
DISABLE(0),
|
||||
/**
|
||||
* Only fetch request with offset not in disk will be handled by tiered storage.
|
||||
*/
|
||||
NOT_IN_DISK(1),
|
||||
/**
|
||||
* Only fetch request with offset not in memory(page cache) will be handled by tiered storage.
|
||||
*/
|
||||
NOT_IN_MEM(2),
|
||||
/**
|
||||
* All fetch request will be handled by tiered storage.
|
||||
*/
|
||||
FORCE(3);
|
||||
|
||||
private final int value;
|
||||
|
||||
Reference in New Issue
Block a user