Repository navigation
test: drain every due trigger after scheduler fault recovery - #1327
Merged
Merged
Conversation
The fault test checked recovery with one scheduler cycle, which evaluates at most 100 due triggers. With 400 triggers, a slow runner that crossed a minute boundary during recovery left the rest without their latest tick. Run enough cycles to drain every trigger due at the settled time.
kvlonge
enabled auto-merge (squash)
November 6, 2026 13:17
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.
Why
The two-scheduler fault test can fail on slow runners with
missing_latest_ticksgreater than zero. After recovery it checks the latest due time with one scheduler cycle, but a cycle evaluates at most 100 due triggers and the test declares 400. When recovery crosses a minute boundary, every trigger becomes due again, and one cycle ticks only 100 of them. Scheduler behaviour is correct: later cycles tick the rest.Changes
This is test-only and adds no DuckShop case: it fixes the test harness, not a project shape, data value or lifecycle sequence.
Verification
missing_latest_ticks: 300(400 triggers minus one 100-trigger page). The new helper reported no anomalies.cargo test -p sqlbuild-orchestration --lib -- scheduler::tests::contracts::tickson SQLite and PostgreSQL, default 5 fault seeds: 10/10 pass.make check-cipasses.