-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Describe the bug
使用 putIfAbsent 报错
2025-10-11T08:28:18,603 [dp-oraclesourcetask-1359-2-reader] ERROR com.alipay.sofa.jraft.rhea.client.RegionRouteTable - There is a high probability that the data in the region table is corrupted. {}
2025-10-11T08:28:18,603 [dp-oraclesourcetask-1359-2-reader] ERROR com.alipay.sofa.jraft.rhea.client.RegionRouteTable - --------------------------------------------------------------------------- {}
2025-10-11T08:28:18,603 [dp-oraclesourcetask-1359-2-reader] ERROR com.alipay.sofa.jraft.rhea.client.RegionRouteTable - * RelatedKey: 5B53504C49545F494E49542D313335392D302D3133323737302D313736303137313134353735345D2D32. {}
2025-10-11T08:28:18,605 [dp-oraclesourcetask-1359-2-reader] ERROR com.alipay.sofa.jraft.rhea.client.RegionRouteTable - * RangeTable: {}. {}
2025-10-11T08:28:18,605 [dp-oraclesourcetask-1359-2-reader] ERROR com.alipay.sofa.jraft.rhea.client.RegionRouteTable - * RegionTable: {}. {}
2025-10-11T08:28:18,605 [dp-oraclesourcetask-1359-2-reader] ERROR com.alipay.sofa.jraft.rhea.client.RegionRouteTable - --------------------------------------------------------------------------- {}
Caused by: com.alipay.sofa.jraft.rhea.errors.RouteTableException: key: 5B53504C49545F494E49542D313335392D302D3133323737302D313736303137313134353735345D2D38, message: fail to find region by key
at com.alipay.sofa.jraft.rhea.client.RegionRouteTable.reject(RegionRouteTable.java:335)
at com.alipay.sofa.jraft.rhea.client.RegionRouteTable.findRegionByKeyWithoutLock(RegionRouteTable.java:199)
at com.alipay.sofa.jraft.rhea.client.RegionRouteTable.findRegionByKey(RegionRouteTable.java:188)
at com.alipay.sofa.jraft.rhea.client.pd.AbstractPlacementDriverClient.findRegionByKey(AbstractPlacementDriverClient.java:137)
at com.alipay.sofa.jraft.rhea.client.DefaultRheaKVStore.internalPutIfAbsent(DefaultRheaKVStore.java:1311)
at com.alipay.sofa.jraft.rhea.client.DefaultRheaKVStore.putIfAbsent(DefaultRheaKVStore.java:1290)
at com.alipay.sofa.jraft.rhea.client.DefaultRheaKVStore.putIfAbsent(DefaultRheaKVStore.java:1296)
at com.alipay.sofa.jraft.rhea.client.DefaultRheaKVStore.bPutIfAbsent(DefaultRheaKVStore.java:1306)
at com.datapipeline.base.coordinator.rheakv.kvstore.DpRheaKVStore.lambda$bPutIfAbsent$2(DpRheaKVStore.java:49)
at com.datapipeline.base.coordinator.rheakv.kvstore.DpRheaKVStore.executeWithRetry(DpRheaKVStore.java:114)
... 13 more
参考了https://github.com/sofastack/sofa-jraft/issues/984的回答,但我只设置了一个regionId为-1,且没有配置该region的数据start和end
我记录的并不是数字类型的key,5B53504C49545F494E49542D313335392D302D3133323737302D313736303137313134353735345D2D38 转为字符串为:[SPLIT_INIT-1359-0-132770-1760171145754]-8
这是使用问题,还是代码bug呢
Expected behavior
Actual behavior
Steps to reproduce
Minimal yet complete reproducer code (or GitHub URL to code)
RheaKVStoreOptions opts = new RheaKVStoreOptions();
config.fillRheaKvStoreOptions(opts);
kvStore.addLeaderStateListener(-1, rheaKvStatusListener);
if (kvStore.init(opts)) {
// 参数设置
public void fillRheaKvStoreOptions(RheaKVStoreOptions kvStoreOptions) {
final NodeOptions nodeOptions = getNodeOptions();
Endpoint endpoint = parseServerAddress(this.serverAddress);
StoreEngineOptionsConfigured storeOptsConfigured =
StoreEngineOptionsConfigured.newConfigured()
.withStorageType(StorageType.RocksDB)
.withRocksDBOptions(
RocksDBOptionsConfigured.newConfigured().withDbPath(this.dbPath).config())
.withRaftDataPath(this.dataPath)
.withServerAddress(endpoint)
.withCommonNodeOptions(nodeOptions);
if (!enableMetrics) {
storeOptsConfigured.withMetricsReportPeriod(-1);
}
StoreEngineOptions storeOpts = storeOptsConfigured.config();
final PlacementDriverOptions pdOptions =
PlacementDriverOptionsConfigured.newConfigured().withFake(true).config();
kvStoreOptions.setClusterName(groupId);
kvStoreOptions.setUseParallelCompress(true);
kvStoreOptions.setInitialServerList(this.initialServerAddress);
kvStoreOptions.setStoreEngineOptions(storeOpts);
kvStoreOptions.setPlacementDriverOptions(pdOptions);
}
Environment
- SOFAJRaft version: 1.3.15.bugfix
- JVM version (e.g.
java -version): jdk17 - OS version (e.g.
uname -a): - Maven version:
- IDE version: