Skip to content

Commit 3fc791c

Browse files
committed
check membership and trigger quit workflow when RequestConfigChange failed
1 parent d125682 commit 3fc791c

File tree

1 file changed

+18
-6
lines changed
  • base-kv/base-kv-store-server/src/main/java/com/baidu/bifromq/basekv/store/range

1 file changed

+18
-6
lines changed

base-kv/base-kv-store-server/src/main/java/com/baidu/bifromq/basekv/store/range/KVRangeFSM.java

+18-6
Original file line numberDiff line numberDiff line change
@@ -732,12 +732,24 @@ private CompletableFuture<Runnable> applyConfigChange(long term, long index,
732732
}
733733
} else {
734734
// request config change failed, the config entry is appended due to leader reelection
735-
rangeWriter.state(State.newBuilder()
736-
.setType(Normal)
737-
.setTaskId(taskId)
738-
.build());
739-
// no need to finish command here, it's already finished in RequestConfigChange entry application
740-
onDone.complete(() -> clusterConfigSubject.onNext(config));
735+
boolean remove = !members.contains(hostStoreId);
736+
if (remove) {
737+
rangeWriter.state(State.newBuilder()
738+
.setType(Removed)
739+
.setTaskId(taskId)
740+
.build());
741+
onDone.complete(() -> {
742+
clusterConfigSubject.onNext(config);
743+
quitReason.complete(Removed);
744+
});
745+
} else {
746+
rangeWriter.state(State.newBuilder()
747+
.setType(Normal)
748+
.setTaskId(taskId)
749+
.build());
750+
// no need to finish command here, it's already finished in RequestConfigChange entry application
751+
onDone.complete(() -> clusterConfigSubject.onNext(config));
752+
}
741753
}
742754
}
743755
case MergedQuiting -> {

0 commit comments

Comments
 (0)