mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-11 08:47:46 +02:00
Replaces binary degraded flag with ReplicaState type: Disconnected, Connecting, CatchingUp, InSync, Degraded, NeedsRebuild. Ship() allowed from Disconnected (bootstrap: data must flow before first barrier) and InSync (steady state). Ship does NOT change state. Barrier() gating: - InSync: proceed normally - Disconnected: bootstrap path (connect + barrier) - Degraded: reconnect both data+ctrl connections, then barrier - Connecting/CatchingUp/NeedsRebuild: rejected immediately Only barrier success grants InSync. Reconnect alone does not. IsDegraded() now means "not sync-eligible" (any non-InSync state). InSyncCount() added to ShipperGroup. dist_group_commit.go: removed AllDegraded short-circuit that prevented bootstrap. Barrier attempts always run — individual shippers handle their own state-based gating. 8 CP13-4 tests + TestBarrier_RejectsReplicaNotInSync flips FAIL→PASS. All previously-passing baseline tests remain green. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>