restart: stop hydration history flaking on worker-0 discovery - #38636
Merged
antiguru merged 1 commit intoSep 3, 2026
Merged
Conversation
The `hydration-history-survives-restart` workflow searched for a materialized view whose persist-sink worker sits off worker 0, so that the view's durable finish can be told apart from worker 0's earlier compute-only finish. That search is a dice roll: the sink worker is `hash(sink_id) % workers`, and a fast snapshot write can collapse both workers' stamps into one logging batch. When no trial separated the workers, the fixture aborted the run, which showed up in CI as a flake with no product defect behind it. Discovery now decides only which trial reports a regression, not whether the test passes. The loop still creates fresh views to roll the sink worker and the snapshot timing, and it still prefers a separating trial. Every fully hydrated trial is then checked against the all-worker maximum, which is the property under test whichever worker holds that maximum. A run where no trial separates the workers therefore still checks the property, it only loses the ability to tell a worker-0-only implementation apart on its own, and that query shape is pinned deterministically by `collect_requires_every_worker`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
antiguru
marked this pull request as ready for review
September 3, 2026 08:34
aljoscha
approved these changes
Sep 3, 2026
Member
Author
|
Thanks for the review! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
hydration-history-survives-restartworkflow searched for a materialized view whose persist-sink worker sits off worker 0, so that the view's durable finish can be told apart from worker 0's earlier compute-only finish. That search is a dice roll: the sink worker ishash(sink_id) % workers, and a fast snapshot write can collapse both workers' stamps into one logging batch. When no trial separated the workers, the fixture aborted the run, which surfaced in CI as a flake with no product defect behind it.Discovery now decides only which trial reports a regression, not whether the test passes. The loop still creates fresh views to roll the sink worker and the snapshot timing, and it still prefers a separating trial. Every fully hydrated trial is then checked against the all-worker maximum, which is the property under test whichever worker holds that maximum. A run where no trial separates the workers therefore still checks the property, it only loses the ability to tell a worker-0-only implementation apart on its own, and that query shape is pinned deterministically by
collect_requires_every_worker.The change is confined to
test/restart/mzcompose.py.🤖 Generated with Claude Code