mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-07-31 12:33:24 +00:00
Architect framing 2026-04-27: when a replica goes down or recovers, both the control-plane identity/health loop and the data-plane governance loop receive feedback. Protocol must treat them as two independent loops with no ordering dependency, alignment via durable identity facts (replicaID/epoch/EV/peer address), and idempotency on primary-side dispatch absorbing duplicate triggers. This is a sharpening of v0.4, not a re-bind. Design unchanged: Option B primary-side probe loop, no master protocol change. Changes: - New §1.D: explicit two-loop table, five ordering scenarios all ending safe, anti-requirements (master re-emit NOT prerequisite, primary recovery NOT blocked on master), idempotency guarantees, future RF-health observability noted as different-batch scope. - New INV-G5-5C-TWO-LOOPS-ORDERING-INDEPENDENT in §3 with test pointer (peer_test.go simultaneous-fire test). - New §2 #8 acceptance criterion: unit test exercising the "simultaneous-fire" case (concurrent fact replay + concurrent ProbeIfDegraded on same degraded peer; idempotent absorption). Standing by for architect single-sign of v0.4.1.
sw-block
Private WAL V2 and standalone block-service workspace.
Purpose:
- keep WAL V2 design/prototype work isolated from WAL V1 production code in
weed/storage/blockvol - allow private design notes and experiments to evolve without polluting V1 delivery paths
- keep the future standalone
sw-blockproduct structure clean enough to split into a separate repo later if needed
Suggested layout:
design/: shared V2 design docsprototype/: code prototypes and experiments.private/: private notes, phase development, roadmap, and non-public working material
Repository direction:
- current state:
sw-block/is an isolated workspace insideseaweedfs - likely future state:
sw-blockbecomes a standalone sibling repo/product - design and prototype structure should therefore stay product-oriented and not depend on SeaweedFS-specific paths