Repository navigation
fix(durable): carry the next step through a checkpoint - #232
Merged
Merged
Conversation
Contributor
Author
ACR round 1: correctnessReviewed the step-numbering commit. 0 blockers, so Checked clean: 1,550 randomized Non-blockers, folded in:
Not fixed here:
|
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 16:38
fa0fe3f to
69ef146
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 16:40
69ef146 to
aeac33f
Compare
4 of 5 tasks
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 16:53
aeac33f to
04b5e9d
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 17:09
04b5e9d to
b1c7167
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 17:14
b1c7167 to
5d7a713
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 17:22
5d7a713 to
3d338cd
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 17:33
3d338cd to
8b74a6b
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 17:42
8b74a6b to
de02c29
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 18:56
b72d6ea to
595af41
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 19:04
595af41 to
4a47e7a
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 19:05
4a47e7a to
208860a
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 19:19
208860a to
cf71918
Compare
4 of 5 tasks
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 20:23
cf71918 to
d760291
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 21:02
d760291 to
02aa8da
Compare
Contributor
Author
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 21:25
02aa8da to
9f0db01
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 5, 2026 22:00
9f0db01 to
ad2b6c6
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
2 times, most recently
from
November 5, 2026 22:17
831afc6 to
aef9065
Compare
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 6, 2026 15:41
aef9065 to
4ac4984
Compare
Recovery derived the next step from the restored Trace count when a checkpoint had compacted the tail. A tick barrier consumes an ordinal but leaves no Trace, so the count fell short and the next Fire reused a recorded step. The checkpoint envelope now records the step that follows it. A checkpoint written before this change keeps the old fallback. Relates to #214. Signed-off-by: Ray Karnes <ray.karnes@stablekernel.com>
reka18
force-pushed
the
fix/durable-step-numbering
branch
from
November 9, 2026 15:52
4ac4984 to
8aa8edf
Compare
reka18
marked this pull request as ready for review
November 9, 2026 16:03
joshua-temple
approved these changes
Nov 9, 2026
4 of 5 tasks
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.
What this change does
The next step ordinal survives a checkpoint that compacts the whole tail. The checkpoint envelope now records the step that follows it, and recovery uses the last tail Record, then the envelope, then the old Trace count. Stacked on #230.
A checkpoint written before this change keeps the old fallback, which can still reuse a step.
durablehas no release tags, despite the[0.1.0]changelog heading, so this should only reach unreleased checkpoints.Why
Recovery derived the next step from the Trace count, which doesn't match the ordinals past a tick barrier. The next
Firereused a recorded step. This also removes the hard failure #229 gave recovery from a compacted checkpoint.Relates to: #214
Evidence
On
GOTOOLCHAIN=go1.27.3, indurable:go test ./...TestRecover_StepAfterTickCheckpoint_IsPersistedgo test -race -skip TestRunner_FireDuringTimerLoop_LosesNoAcknowledgedSteps ./...golangci-lintChecklist
git commit -s) per the DCOtype: subject)mage checkpasses locally (lint + race tests + govulncheck): not run as a whole, and it cannot pass until the rest of the chain lands