Repository navigation
Conversation
4 of 5 tasks
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 16:38
15ab425 to
41bfbb4
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 16:40
41bfbb4 to
f87bc98
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 16:53
f87bc98 to
8c4ce15
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 17:09
8c4ce15 to
83c5655
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 17:14
83c5655 to
1023215
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 17:22
1023215 to
1890a2c
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 17:33
1890a2c to
2e345fa
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 17:42
2e345fa to
96cceff
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 18:04
96cceff to
0d6f9ce
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 18:20
0d6f9ce to
f6c246d
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 19:28
8c3e849 to
d1c40fc
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 20:23
d1c40fc to
95201e6
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 21:02
95201e6 to
44571d6
Compare
Contributor
Author
|
Review results. One reviewer per dimension, each reading the others' findings. All seven dimensions have zero blockers on the latest round. Fixed along the way: |
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 21:25
44571d6 to
b9ce34a
Compare
reka18
force-pushed
the
fix/durable-canceled-service
branch
from
November 5, 2026 22:00
b9ce34a to
4d2a640
Compare
This was referenced Nov 9, 2026
A context ended during RunService, Tick or DeliverToActor stops the kernel's Fire, but the result was journaled anyway. Recovery then committed something the live instance never applied, or for an actor, failed on every attempt. Each now returns ErrHandleFailed and records nothing. Recover and StateAt fail on a canceled context instead of returning state short of the journal. Relates to #214. Signed-off-by: Ray Karnes <ray.karnes@stablekernel.com>
This branch has not been deployed
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
A step whose context ended partway is no longer journaled. Stacked on #233.
RunService: a settle the kernel refused returnstrueandErrHandleFailed, wrapping the error, and journals nothing. AfterRecoverthe service stays in flight, so it runs a second time when the host callsRunService. Please check that this is the behavior you want.Tick: a due timer the kernel refused returnsErrHandleFailedand journals nothing.Recoverre-arms the timer. durable: defects found in the platform-redesign review #214 doesn't list this one, but it's the same defect.DeliverToActor: a context that ended during the delivery returnsErrHandleFailedand journals nothing. The actor restarts from its initial state afterRecover. Before this, a canceled delivery could make every laterRecoverfail. durable: defects found in the platform-redesign review #214 doesn't list this one either.RecoverandStateAtnow fail on a canceled context, checked before each replayed Record, because a replayed settle or tick could stop silently and return state short of the journal.Known and left open: a
Firecanceled through a middleware's own derived context bypasses these guards, which only watch the caller's context.Why
The kernel refused the step live, but the result was journaled, so recovery committed something the live instance never applied. For an actor, it left a journal
Recovercouldn't replay.Relates to: #214
Evidence
On
GOTOOLCHAIN=go1.27.3, indurable:go test ./...TestService_ResultFromCanceledTurn_NotCommittedOnRecoverandTestService_CanceledTurn_RecoverRerunsTheServiceChecklist
git commit -s) per the DCOtype: subject)mage checkpasses locally (lint + race tests + govulncheck): not run as a whole