mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-21 21:44:22 +02:00
Architect-approved exception (consensus v3.9, 2026-04-30): WalShipper
dual-mode contract carves Realtime out of §6.3(B) timer + §6.8(3)(9)
send(incoming, debt) normative scope. Backlog mode is fully normative;
Realtime is per-append (T4a no-replay), with StrictRealtimeOrdering
as the production safety switch.
Files:
v3-recovery-algorithm-consensus.md
- NEW §13: Architect-approved exceptions, with E-WALSHIPPER-
DUAL-MODE entry. Old §13 Revision → §14; old §14 Document
map → §15. Cross-refs in §I, §6.3(A)(B), §6.8 checklist,
§V §12 (CHK-WALSHIPPER-TIMER-DRAIN explicitly limited to
ModeBacklog), §15 (index gains §13).
- §14 revision row v3.9.
v3-recovery-wal-shipper-mini-plan.md
- §11.1 G-TIMER row updated to "C2 + dual-mode/§13".
- §11.2 replaced (was: pre-merge "Realtime drains on cursor<head"
bullets) with C2 dual-mode contract + §11.2a normative table:
* Backlog: §6.3 / §6.8(3)(4)(9) fully apply (timer, scan,
oldest-first, send(·, debt)).
* Realtime: NotifyAppend per-LSN-in-order; lsn==cursor+1
invariant; no substrate replay (§13 carve-out).
* Production safety switch: StrictRealtimeOrdering.
- §11.3 compliance receipt rebuilt as 1–9 ordered table with
commit SHAs (P2d cb8ff1c, C1 294d4bf, C2 53c292f, C3 40f2935,
review-fix 377bcb0).
- §11.4 test anchor table gains StrictRealtimeOrdering opt-in.
- §11.5 invariants gain (4) §13 dual-mode + (5) replicaID drift.
- §11.6 reshaped as production-migration table:
* Engine drives rebuild-on-gap before flipping
StrictRealtimeOrdering=true.
* Fix replicaID drift in startRebuildDualLane (sink uses
engine replicaID; bridge.coord uses dl.ReplicaID).
* Hardware-run carries: §IV T2 (barrier vs targetLSN),
§IV T7 (R2 saturation under sustained pressure).
* PR template line: ban `lsn > cursor + 1` debt detection
(banned regression anchor; use `cursor < head` if it
ever needs to come back, but only inside Backlog).
- §8 revision: v0.6.
v3-recovery-wal-shipper-spec.md
- Goal/checklist front-matter cross-refs §13 + mini-plan §11.2a.
- §10 revision row aligning with consensus v3.9.
Companion implementation on seaweed_block g7-redo/wal-shipper-impl:
- 377bcb0 review-fix: T4a Realtime sequence guard + drainOpportunity TOCTOU
- cb17338 docs: drainOpportunity comment matches §13 dual-mode contract
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