Repository navigation
runtime/session: recover interrupted actor resumes - #3649
Open
shashankram wants to merge 2 commits into
Open
shashankram wants to merge 2 commits into
shashankram wants to merge 2 commits into
Conversation
\# Description Canceled delivery can leave a restored actor running without a turn, holding worker capacity indefinitely. - Retain expired dispatch attempts for the existing lifecycle worker to process. - Claim suspension only when no active turn or newer delivery owns the Session. - Preserve snapshots and logical readiness so subsequent messages resume normally. - Cover cancellation, competing lifecycle work, retries, and subsequent delivery. \# Change Type ``` /kind fix ``` \# Changelog ```release-note Actors left running after canceled message delivery now suspend and release worker capacity automatically. ``` \# Additional Notes Signed-off-by: Shashank Ram <shashank.ram@solo.io>
\# Description Canceled message delivery can leave an actor stuck resuming without a turn, holding worker capacity until another caller resumes it. - Resume interrupted actors before suspending under the existing cleanup claim. - Queue bounded retries with backoff capped at 15 seconds to free workers. - Preserve ownership across retries and allow explicit force deletion of cleanup. - Cover cancellation, lost replies, competing lifecycle work, and later delivery. \# Change Type ``` /kind fix ``` \# Changelog ```release-note Actors left resuming after canceled message delivery now recover and suspend automatically. ``` \# Additional Notes Signed-off-by: Shashank Ram <shashank.ram@solo.io>
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.
Description
Requires #3635 to merge first. This branch builds on that PR; its separate follow-up commit is
d30cb0bd.Canceling message delivery during actor restoration can leave the actor RESUMING without a turn, holding worker capacity. The existing Session lifecycle worker now retries resume, then suspends the actor so a later message can resume normally.
Interrupted-resume cleanup flow
sequenceDiagram participant D as Session store participant W as Lifecycle worker participant S as Substrate W->>D: Claim expired dispatch with no active turn W->>S: Read actor identity and state alt Actor is RESUMING W->>S: Resume actor S-->>W: Confirm RUNNING end W->>S: Suspend actor and save durable snapshot S-->>W: Confirm suspension and snapshot W->>D: Record snapshot and clear dispatch and claim Note over W,S: Retryable failures requeue the same owner with backoffTesting
Change Type
Changelog