mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-18 20:18:27 +02:00
m01 hardware run 3 at seaweed_block@ac9392d: - #1 verify_cluster_ready ✅ GREEN - #2 verify_byte_equal ✅ GREEN - #3 verify_network_catchup ✅ GREEN (9s) - #4 verify_restart_catchup ❌ RED (30s timeout) Root cause (verified in code + log): Primary log shows probe loop fired correctly post-restart and the wire probe SUCCEEDED twice (R=2 S=1 H=3), but no StartCatchUp ever dispatched. Engine apply.go:117-128 checkReplicaID drops events whose ReplicaID doesn't match the adapter's tracked Identity — cmd/blockvolume's host adapter tracks the PRIMARY'S OWN slot (ReplicaID=r1), not peer r2. Probe results for r2 are correctly dropped as wrong_replica. Component test (Batch #6) passed because cluster.go's WithEngineDrivenRecovery constructs c.primary.adapters[] — one per peer. cmd/blockvolume only constructs ONE adapter for the host's own slot. The component test exercised a different (architecturally-correct) wiring than production has. §1.H audit verdict was correct on engine SEMANTICS; it did not extend to whether the production binary CONSTRUCTS per-peer engine state. That layer was assumed; hardware revealed the assumption. §close decision: - G5-5C software pieces all sound, stay landed (50 unit + integ tests PASS; full ./... regression PASS). - Hardware finding carries to G5-5D — Per-peer adapter wiring for primary-side recovery dispatch. - G5-5D pass criterion = exact verify_restart_catchup case from this run; seed evidence = sw-block/design/g5-artifacts/primary-fail.log. - New INV to inscribe at G5-5D close: INV-G5-5D-PER-PEER-ADAPTER-PER-PEER-ENGINE. Doc updates: - §close.evidence: hardware-pin row table filled with run 3 results. - §close.deltas: 3 implicit assumptions surfaced. - §close.findings: 2 findings (#1 per-peer adapter gap; #2 script port-release race already fixed). - §close.forward-carries: G5-5D added as named carry. - architect-review-checklist: scope/audit/engine-impact/product level all updated to reflect actual reached state (L3+, not L4). Awaiting architect ratification of G5-5D scope at single-sign or earlier; sw drafts G5-5D mini-plan once architect rules.
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