Skip to content

fix(wal): read the log and replay refs through the caller's manifest - #9

Merged
cyharyanto merged 2 commits into
mainfrom
fork-events-fold
Oct 19, 2026
Merged

cyharyanto merged 2 commits into
mainfrom
fork-events-fold

Conversation

@cyharyanto

Copy link
Copy Markdown

Summary

  • Carries the events-bridge fix ahead of upstream. The same commit is open upstream as fix(wal): read the log and replay refs through the caller's manifest tobi/walgit#107, which describes the race, the fix and its testing in full.
  • Problem: a checkpoint landing while the bridge catches up made it emit nothing for the folded push and advance its cursor past it, so the push never produced an event.
  • Objective: every log and ref-replay read must go through the manifest its bounds came from, so no push is skipped.

Merge

fork-events-fold merges wt-events-fold (the upstream PR's branch, based on upstream main 80e9a20) into this fork's main; the one conflict, both sides appending tests to tests/events.rs, keeps both. On the merged tree just clippy, just sim and just e2e pass; just test passes except the three asset tests that need pnpm run build, which fail the same way without this change.

catch_up took head_seq from one manifest while read_log resolved a fresher
one; a checkpoint in between trims that one's segments, so the bridge
emitted nothing and advanced its cursor past the push. read_log,
refs_at_seq, refs_as_of and the checkpoint-time helpers now take the
caller's manifest, and fresh_manifest() is the explicit way to get the
newest one.

Round trips: the bridge catch-up, the settings history and policy dry-run,
the repository overview and `walgit settings history` each made two
conditional manifest GETs (the sync, then read_log's own) and now make one;
`walgit wal ls` and `wal show` still make one. No budget in
docs/ROUNDTRIPS.md changes.
# Conflicts:
#	crates/walgit-server/tests/events.rs
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