Skip to content

test(HA): regression ITs for #4147 cluster-formation edge cases #4205

@lvca

Description

@lvca

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/).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No fields configured for Bug.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions