mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-09 15:57:47 +02:00
Architect framing 2026-04-27: enumerate ten protocol boundary rules and address engine-evolution question. Engine vs primary runtime vs master split: - Engine owns: recovery FSM, single in-flight per peer, generation/epoch fence, probe→decision, backoff/cooldown policy, stale-ack-cannot-promote-health rule, recovery reason / projection - Primary runtime/adapter owns: timer / degraded-peer loop, transport probe execution, feeding probe result into engine, executing engine-emitted commands, ReplicationVolume / ReplicaPeer connection lifecycle - Master owns: identity / topology / assignment / health observation ONLY. No runtime recovery. No epoch bumps for short up/down. Six in-scope boundary rules (#1, #2, #3, #4, #7, #8): - #1 Admitted Peer Rule — already INV-G5-5C-PRIMARY-RECOVERY-AUTHORITY-BOUNDED - #2 Generation Fence — NEW INV-G5-5C-GENERATION-FENCE - #3 Single In-Flight Per Peer — NEW INV-G5-5C-SINGLE-INFLIGHT-PER-PEER - #4 Probe Before Catch-Up — NEW INV-G5-5C-PROBE-BEFORE-CATCHUP - #7 Backoff/Cooldown — NEW INV-G5-5C-RECOVERY-BACKOFF (extends v0.4 fixed-5s into 5s→10s→20s→40s→60s cap, reset on success) - #8 Stale Ack Guard — NEW INV-G5-5C-STALE-ACK-NO-HEALTH-PROMOTION (cross-refs G5-5 round-14 gate-degraded artifact) Three forward-carries OUT of G5-5C (per §5): - #5 Durability Mode Explicit → G5-2 / G5-6 - #6 RF Health Reporting Separate From Recovery → future master observability batch - #10 Status Surface (recovery reason, effective RF, last probe) → G5-3 metrics/backpressure One citation (#9 Replica-side lineage check): already enforced by T4 acceptMutationLineage gate; G5-5C cites, no new code. §1.H code-start audit gate: sw audits per-INV current owner location BEFORE writing any code. Halt-condition: if recovery FSM is embedded in ReplicationVolume, fence is re-derived per call site, in-flight is implicit, or stale-ack guard is missing — sw stops and re-scopes as engine-evolution batch instead of layering ifs in core/replication/. Audit findings published as commit note pre-code; PR includes audit-summary. §2 acceptance criteria: add #13 (stale-ack guard), #14 (backoff progression), #15 (code-start audit). Acceptance count now 15 covering 7 INVs (6 new + reconnect orthogonality from v0.4.3). Standing by for architect single-sign of v0.4.4.
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