tidaldb/tidal-stress
jx12n d0a52e4530 feat(m11): catch-up timer retry + TSEG segment version header (m11p4)
WAL segment format: 8-byte TSEG header (magic + version byte + 3 reserved)
prepended to every new segment. Legacy headerless segments (m0-m11p3) read
as implicit v0 — no migration. Unknown magic/version surfaces as
WalError::SegmentFormatUnknown at open time; foreign files are never
repaired or truncated (fixes the silent data-loss path from the p3 rollout
incident where torn-tail repair zeroed a follower's unreadable segments).

Catch-up transport: FAILED_PRECONDITION ("snapshot required") and stream
errors that skip the shard now arm a timer retry (re-arm-on-skip is the
load-bearing liveness fix — without it a skipped pull never re-fires and
the follower stays permanently behind). Single retry pending per shard;
CatchupRunner owns the Arc'd state shared between the retry tasks and the
transport. Test: tidal-net/tests/catchup_retry.rs covers the retry path.

Stress: k8s stress-job-t2a/t2b yaml + ops/stress-test-p3-t2 runbook.
2026-06-11 17:05:20 -06:00
..
k8s feat(m11): catch-up timer retry + TSEG segment version header (m11p4) 2026-06-11 17:05:20 -06:00
src feat(m11): quorum-acked writes — ack=leader|quorum, commit index, durable frontier reports (m11p3) 2026-06-11 13:28:08 -06:00
Cargo.toml feat(tidal-stress): open-loop capacity load generator (thepeach feed workload) 2026-06-10 21:54:21 -06:00