Repository navigation
WireMesh v0.10.6
·
102 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
v0.10.6 — a failed rotation unwinds itself (backlog item 9, route R1)
Patch release. Gateway-only; no proto or config change.
Fixed
- The rotation wedge (backlog item 9, route R1). A rotation that failed part-way left the gateway's rotation state machine parked off
Idle, andRotation::on_directiveis honoured only fromIdle— so the gateway silently ignored every laterRotateDirectiveuntil the process restarted, and the minted private key for the failed epoch survived on disk.handle_rotatenow unwinds its own failure synchronously: drops the in-flight role, tears the new epoch's tun down, evicts its enforcer, scrubs the orphan mint fromepoch_keys.json, and returns the state machine toIdlelast, so the next directive is honoured.EpochKeys::generate_nextis replaced bygenerate_next_at(n)— the gateway mints at the epoch the controller directed rather than keeping a second local counter that diverged the moment a scrub removed an entry. (PR #90) - Observability:
wiremesh_gateway_rotation_phase{phase}gauge androtation_aborts_total; aROTATION STALLEDwarning after 90s inOverlapping(route R2 is not aborted gateway-side — that would be a hard blackhole — it is surfaced). - Test-only fault hook (
netns-testsfeature; compiled out of release binaries, verified bystrings).
Found on the way
This release's done-bar (crates/wiremesh-gateway/tests/rotation_wedge.rs) found two controller defects that had been latent because clean aborts were never routine: the broker directing the aborted epoch's orphan sentinel (v0.10.4) and the tracker seeding from it and dropping the real epoch's ack (v0.10.5). This release depends on both.
Still off by default
Automatic key rotation remains off (no WIREMESH_ROTATION_INTERVAL = no timer). Route R1 of item 9 is closed; the timer stays off pending R2/R15 and the orphan-row lifecycle at abort ((C-drop)/(E)), all Phase C. Backlog item 34 records the 5s lost-directive window after an unwind (nothing retries a directive — C1).
Full Changelog: v0.10.5...v0.10.6