Files
seaweedfs/sw-block
pingqiu 13eb8181d3 G5-5C mini-plan v0.4.2 → v0.4.3: add §1.F reconnect orthogonal axes
Architect framing 2026-04-27 (sharpening v0.4.2): reconnect splits
along two orthogonal dimensions — connection recovery vs identity /
lineage change. Each axis has different protocol semantics; G5-5C
must handle both correctly.

Architect's protocol judgment points:
1. PeerSetGeneration only changes for identity / address / lineage
   change. Brief disconnects / restarts / freshness flapping do NOT
   bump generation.
2. Primary's degraded-peer loop only acts on currently-admitted peers
   (§1.E reaffirmed).
3. After reconnect, primary still probes R/S/H — reconnect alone is
   not assumed sufficient.
4. If a higher PeerSetGeneration arrives during reconnect / probe,
   the in-flight recovery must stop or invalidate.

Changes:
- New §1.F with two cases:
  Case 1 (identity unchanged): primary retries existing peer
    descriptor; new sessionID minted (sessions are session-scoped, not
    peer-scoped); probe R/S/H; catch-up / rebuild as needed; no master
    re-emit needed. This is G5-5C's core path.
  Case 2 (identity changed): existing UpdateReplicaSet T4a-5 path
    (volume.go:229-246) tears down + recreates; in-flight aborts via
    Close(); new peer with new lineage takes over.
- Misread guards documented: "primary keeps retrying old address
  forever" rejected by Case 2 + §1.E (c); "master must bump on every
  blip" rejected by Case 1 + §1.D.
- New INV-G5-5C-RECONNECT-ORTHOGONAL-AXES in §3.
- New §2 #11 (reconnect Case 1 — identity unchanged, no re-emit) and
  §2 #12 (reconnect Case 2 — lineage bump mid-flight).

This is structural reaffirmation: the V3 code already does Case 2
correctly (T4a-5 teardown). Case 1 is what the probe loop adds. The
new tests pin both axes against future drift.

Standing by for architect single-sign of v0.4.3.
2026-04-27 15:07:17 -07:00
..

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-block product structure clean enough to split into a separate repo later if needed

Suggested layout:

  • design/: shared V2 design docs
  • prototype/: 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 inside seaweedfs
  • likely future state: sw-block becomes a standalone sibling repo/product
  • design and prototype structure should therefore stay product-oriented and not depend on SeaweedFS-specific paths