Skip to content

bench: re-validate write path on electric#4710 (recovery hardening) — no regression#7

Merged
balegas merged 1 commit into
mainfrom
bench/4710-write-revalidation
Jul 14, 2026
Merged

bench: re-validate write path on electric#4710 (recovery hardening) — no regression#7
balegas merged 1 commit into
mainfrom
bench/4710-write-revalidation

Conversation

@balegas

@balegas balegas commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Re-ran the two write/durability canonical suites on the electric#4710 recovery-hardening build to confirm its added durability barriers cost no write throughput vs the #4697 baseline. Verdict: no regression.

What #4710 changes (and why it could regress writes)

#4710 hardens the recovery/durability path: fail-stop abort() on unretryable fsync/barrier failures, always-sync sidecar tmp writes, and extra parent-dir fsyncs after WAL renames (tails / seal / roll / fresh-open). Every one of those lands on the write path — so that's exactly where a regression would show. Reads, ursula, and the mixed-cal/mixed-writes suites touch no code #4710 changed, so they were not re-run (split provenance in PROVENANCE.md).

Results

canonical-write — peak append/s (256 B), Δ vs #4697

streams wal-ideal memory
10k 413k (−1.0%) 669k (−1.6%)
100k 386k (+1.0%) 628k (−0.5%)
  • No cardinality cliff: wal −6.5%, memory −6.1% across 10k→100k. Regression gates (wal@100k > 250k, memory@100k > 400k) cleared wide.
  • memory is flat — it takes no fsync barrier, so the hardening cannot touch it. wal is within ±1% (100k even +1%). The two move exactly as the code predicts; #4710's barriers cost nothing measurable.

canonical-mixed-delivery — SSE delivery under a write ladder (2000 subs)

writes/s wal del/s (p99 ms) memory del/s (p99 ms)
4k 4.0k (147) 3.3k (140)
16k 15.9k (51) 15.9k (51)
40k 33.3k (86) 39.8k (5)
66k 65.7k (92) 65.7k (7)
max 64.1k @ 84k writes (69) 139.3k @ 140k writes (63)
  • The 2026-07-02 memory-mode delivery collapse stays fixed — memory delivery tracks writes 1:1 to 140k/s (baseline was 127k; the gap is run-to-run headroom). wal caps at ~64k del/s at full write saturation — same shape as #4697.

Files changed

  • results/canonical-write/**, results/canonical-mixed-delivery/** — re-run cells + aggregates + per-suite reports (#4710).
  • results/REPORT.md — write + delivery sections updated to #4710 with Δ callouts; re-validation banner.
  • results/PROVENANCE.md — split build provenance (#4710 for write suites, #4697 for the rest).

Ops

Both suites self-tore-down; zero GKE clusters at run end (verified). Teardown watchdog was armed (scoped ^bench-canon) as a safety net and stood down clean.

🤖 Generated with Claude Code

… no regression

Re-ran the two write/durability canonical suites (canonical-write,
canonical-mixed-delivery) on the #4710 recovery-hardening build
(durable-streams:dev digest 93803a261706, electric head abca3a5f7) to confirm
the added durability barriers — fail-stop fsync/barrier paths, always-sync
sidecar, extra parent-dir fsyncs on the WAL path — cost no write throughput
vs the #4697 baseline.

Result: no regression.
  - canonical-write: wal-ideal 413k/386k @ 10k/100k (#4697: 417k/382k, ±1%);
    memory 669k/628k (#4697: 680k/631k, flat). No cardinality cliff
    (wal -6.5%, memory -6.1% across 10k->100k). Gates cleared wide.
  - canonical-mixed-delivery: memory delivery still tracks writes 1:1 to 140k/s
    (the 2026-07-02 collapse stays fixed); wal caps at ~64k del/s at full write
    saturation — same shape as #4697.

memory is flat because it takes no fsync barrier, so the hardening cannot touch
it; wal is within noise. The two move exactly as the code predicts.

Read/ursula/mixed-cal/mixed-writes suites are unchanged code paths under #4710
and keep their #4697 values (split provenance recorded in PROVENANCE.md).

Both suites self-tore-down; zero clusters at run end.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y3x7bcT9vLGiT4tXZeQpnk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant