mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-20 13:30:46 +02:00
Architect REVISE ruling on v0.2 — three items, all addressed:
1. V3 paths (was: V2 weed/server + weed/storage/blockvol).
v0.3 §1 Files table corrected to seaweed_block paths:
- core/rpc/proto/control.proto (proto field add)
- core/host/master/services.go (A1 re-emission)
- core/authority/observation_store.go (obsRev tracking)
- core/replication/volume.go (lex compare in UpdateReplicaSet)
- core/host/volume/host.go (applyFact dispatch wiring)
- core/replication/peer.go (OnReappeared entry point)
- core/host/volume/apply_fact_test.go + master/services_test.go +
replication/volume_test.go + replication/component/...
Header now states Repo: seaweed_block (V3) explicitly.
2. Peer-set generation design (was: missing).
New §1.B enumerates three options the architect named (master-
maintained counter / observation revision folded / separate field)
with concrete V3 mechanics + tradeoff matrix. sw recommends
Option γ (separate PeerSetRevision field alongside existing
PeerSetGeneration). Stale-drop hazard cited at
replication/volume.go:194-209. UpdateReplicaSet stale-replay rule
becomes lex compare on (generation, revision). Open architect
choice within γ: per-slot vs per-volume rev (sw proposes per-volume
max).
New INV-MASTER-PEER-SET-GEN-REV-MONOTONIC inscribed in §3 with
test pointers for revision bump + lineage reset + lex-compare
stale-drop.
3. Truth-domain wording (was: A1 = "read").
New §1.C corrects: A1 is publication / re-emission of master truth,
not pure read. Remains authority-safe (no new lineage invented).
Per-domain matrix replaces v0.2's bullet list.
§2 acceptance criteria #2/#3 updated to reference (PeerSetGeneration,
PeerSetRevision) lex-compare semantics and pin V3 test file paths.
§6 risks add two new entries: obsRev overflow (none) + master-restart
revision reset (mitigation: first-attach bootstrap clears
lastAppliedGeneration/lastAppliedRevision). §7 sign table records
absorbed REVISE items + open single-sign.
Standing by for architect single-sign of v0.3.
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