diff --git a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/TieredMessageStore.java b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/TieredMessageStore.java index 9322891047..78b6ae3bcf 100644 --- a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/TieredMessageStore.java +++ b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/TieredMessageStore.java @@ -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 diff --git a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/common/TieredMessageStoreConfig.java b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/common/TieredMessageStoreConfig.java index 2d43b9f6b5..8b44837b57 100644 --- a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/common/TieredMessageStoreConfig.java +++ b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/common/TieredMessageStoreConfig.java @@ -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;