[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:
TheR1sing3un
2023-04-26 11:55:21 +08:00
committed by GitHub
parent e3b8178871
commit 7bb061158b
2 changed files with 24 additions and 1 deletions
@@ -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
@@ -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;