Follow-up to #4147 (closed and delivered). The bootstrap protocol shipped end-to-end; the original plan listed 10 ITs and only the headline RaftBootstrapFromLocalDatabaseIT landed. The ITs below remain valuable as regression coverage for already-shipped cluster-formation edge cases.
ITs to write
RaftBootstrapPicksHighestLastTxIdIT: A=X-1, B=X, C=X+1 - verify C becomes the bootstrap source.
RaftBootstrapLeadershipTransferIT: when the non-leader has the highest lastTxId, leadership transfer happens before BOOTSTRAP_FINGERPRINT_ENTRY commits.
RaftBootstrapFingerprintMismatchSameLsnIT: identical lastTxId, divergent fingerprints across peers - non-source peers fall back to leader-shipped full snapshot with a WARNING about divergent staging.
RaftBootstrapTimeoutFallbackIT: one peer unreachable at bootstrap - leader proceeds after arcadedb.ha.bootstrapTimeoutMs with a SEVERE log identifying the missing peer.
RaftBootstrapDoesNotEngageOnRestartIT: cluster restart with non-empty Raft log - bootstrap path is gated off, late joiners use the existing leader-shipped snapshot path.
RaftBootstrapLateNewerJoinerIT: a peer with strictly newer lastTxId joins after the bootstrap entry is committed - refuses to start with the actionable SEVERE in ArcadeStateMachine.applyBootstrapFingerprintEntry.
Dropped from the original plan
These three ITs from the #4147 plan no longer apply because the underlying code path was removed in the #4147 cleanup commits:
RaftBootstrapDeltaResyncIT
RaftBootstrapDeltaFallbackToFullIT
RuntimeDeltaCatchupIT
Runtime delta catch-up is native Apache Ratis AppendEntries; no ArcadeDB-level delta endpoint exists. Bootstrap-mismatch peers reinstall the full snapshot and then track new traffic via Ratis.
Scope
Pure regression test investment. No production code changes expected. All six ITs follow the patterns established by RaftBootstrapFromLocalDatabaseIT and PostBootstrapStateHandlerIT (in ha-raft/src/test/java/com/arcadedb/server/ha/raft/).
Follow-up to #4147 (closed and delivered). The bootstrap protocol shipped end-to-end; the original plan listed 10 ITs and only the headline
RaftBootstrapFromLocalDatabaseITlanded. The ITs below remain valuable as regression coverage for already-shipped cluster-formation edge cases.ITs to write
RaftBootstrapPicksHighestLastTxIdIT: A=X-1, B=X, C=X+1 - verify C becomes the bootstrap source.RaftBootstrapLeadershipTransferIT: when the non-leader has the highestlastTxId, leadership transfer happens beforeBOOTSTRAP_FINGERPRINT_ENTRYcommits.RaftBootstrapFingerprintMismatchSameLsnIT: identicallastTxId, divergent fingerprints across peers - non-source peers fall back to leader-shipped full snapshot with a WARNING about divergent staging.RaftBootstrapTimeoutFallbackIT: one peer unreachable at bootstrap - leader proceeds afterarcadedb.ha.bootstrapTimeoutMswith a SEVERE log identifying the missing peer.RaftBootstrapDoesNotEngageOnRestartIT: cluster restart with non-empty Raft log - bootstrap path is gated off, late joiners use the existing leader-shipped snapshot path.RaftBootstrapLateNewerJoinerIT: a peer with strictly newerlastTxIdjoins after the bootstrap entry is committed - refuses to start with the actionable SEVERE inArcadeStateMachine.applyBootstrapFingerprintEntry.Dropped from the original plan
These three ITs from the #4147 plan no longer apply because the underlying code path was removed in the #4147 cleanup commits:
RaftBootstrapDeltaResyncITRaftBootstrapDeltaFallbackToFullITRuntimeDeltaCatchupITRuntime delta catch-up is native Apache Ratis AppendEntries; no ArcadeDB-level delta endpoint exists. Bootstrap-mismatch peers reinstall the full snapshot and then track new traffic via Ratis.
Scope
Pure regression test investment. No production code changes expected. All six ITs follow the patterns established by
RaftBootstrapFromLocalDatabaseITandPostBootstrapStateHandlerIT(inha-raft/src/test/java/com/arcadedb/server/ha/raft/).