Repository navigation
fix(server): Force stop no longer tears down a queued follow-up that started during cleanup #31038
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+432
−46
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
8e3811d
test(server): reproduce #30988, Force stop tears down a queued follow…
juliusmarminge f15fe88
fix(server): Force stop leaves a queued follow-up's session running
juliusmarminge f93e948
test(server): Force stop reports released when it leaves the follow-u…
juliusmarminge 6a54259
fix(server): a kept session drops the stopped run's busy turns so it …
juliusmarminge ba48569
Merge remote-tracking branch 'origin/main' into fix/issue-30988
juliusmarminge 6a77816
Merge remote-tracking branch 'origin/main' into fix/issue-30988
juliusmarminge 4bb412f
fix(server): Force stop keeps a session its promoted follow-up has no…
juliusmarminge 68e7e53
Merge remote-tracking branch 'origin/main' into fix/issue-30988
juliusmarminge 553bd61
refactor(server): Force stop guards both reads of a newer active run
juliusmarminge dfb8edf
fix(server): a session Force stop keeps still idles out
juliusmarminge 6d8ac38
Merge remote-tracking branch 'origin/main' into fix/issue-30988
juliusmarminge 0b5c0f1
fix(server): Force stop keeps only the session a newer run uses
juliusmarminge 45f491e
fix(server): Force stop keeps a session only for a newer run on it
juliusmarminge File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Guard the post-release detach against a newer run's attachment.
When
releaseUnlessBusykeeps the session, the force-stop path callslaterRunActive(line 1385) and thendetach(line 1387). A newer run on the same thread can attach and start in the gap.detachthen deletes that thread fromattachedThreadIds. It checks membership only and does not check run ownership or take thethreadAttachmentlock thatensureThreadAttacheduses.Only the
releaseUnlessBusycall has the atomic re-check described atThreadManagementService.ts:1362-1363. Thedetachcall at line 1387 does not use that re-check.If the newer attachment exists when
detachremoves it, the session can be released under the newer run. On a session that does not support multiple provider threads,releaseEntryruns. On a multi-thread session,detachinterrupts the newer run's running turns.The later-run check and the attachment removal need to form one guarded step. The inspected code does not show a safe local edit for this, so no patch is proposed.
Source: Learnings