lizhimins commented on code in PR #8571:
URL: https://github.com/apache/rocketmq/pull/8571#discussion_r1726645397
##########
broker/src/main/java/org/apache/rocketmq/broker/subscription/RocksDBSubscriptionGroupManager.java:
##########
@@ -16,39 +16,116 @@
*/
package org.apache.rocketmq.broker.subscription;
-import java.io.File;
-
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
import org.apache.rocketmq.broker.BrokerController;
-import org.apache.rocketmq.common.config.RocksDBConfigManager;
+import org.apache.rocketmq.broker.RocksDBConfigManager;
+import org.apache.rocketmq.common.UtilAll;
import org.apache.rocketmq.common.utils.DataConverter;
+import org.apache.rocketmq.remoting.protocol.DataVersion;
import
org.apache.rocketmq.remoting.protocol.subscription.SubscriptionGroupConfig;
+import org.rocksdb.RocksIterator;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
+import java.io.File;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.function.BiConsumer;
public class RocksDBSubscriptionGroupManager extends SubscriptionGroupManager {
+ protected RocksDBConfigManager rocksDBConfigManager;
+
public RocksDBSubscriptionGroupManager(BrokerController brokerController) {
super(brokerController, false);
- this.rocksDBConfigManager = new
RocksDBConfigManager(brokerController.getMessageStoreConfig().getMemTableFlushIntervalMs());
+ this.rocksDBConfigManager = new
RocksDBConfigManager(rocksdbConfigFilePath(),
brokerController.getMessageStoreConfig().getMemTableFlushIntervalMs());
}
@Override
public boolean load() {
- if (!this.rocksDBConfigManager.load(configFilePath(), this::decode0)) {
+ if (!rocksDBConfigManager.init()) {
+ return false;
+ }
+ if (!loadDataVersion() || !loadSubscriptionGroupAndForbidden()) {
return false;
}
this.init();
return true;
}
+ public boolean loadDataVersion() {
+ return this.rocksDBConfigManager.loadDataVersion();
+ }
+
+ public boolean loadSubscriptionGroupAndForbidden() {
+ return
this.rocksDBConfigManager.loadData(this::decodeSubscriptionGroup)
+ && this.loadForbidden(this::decodeForbidden)
+ && merge();
+ }
+
+ public boolean loadForbidden(BiConsumer<byte[], byte[]> biConsumer) {
+ try (RocksIterator iterator =
this.rocksDBConfigManager.configRocksDBStorage.forbiddenIterator()) {
+ iterator.seekToFirst();
+ while (iterator.isValid()) {
+ biConsumer.accept(iterator.key(), iterator.value());
+ iterator.next();
+ }
+ }
+ return true;
+ }
+
+
+ private boolean merge() {
+ if
(!brokerController.getMessageStoreConfig().isTransferMetadataJsonToRocksdb()) {
+ log.info("The switch is off, no merge operation is needed.");
Review Comment:
switch what?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]