Kill child process tree when cancelling git clone#309248
Open
yogeshwaran-c wants to merge 1 commit intomicrosoft:mainfrom
Open
Kill child process tree when cancelling git clone#309248yogeshwaran-c wants to merge 1 commit intomicrosoft:mainfrom
yogeshwaran-c wants to merge 1 commit intomicrosoft:mainfrom
Conversation
When a user cancels a git clone operation, the UI shows it as cancelled but the underlying git process and its child processes continue running in the background, consuming resources and holding file locks. The existing code calls child.kill() which only terminates the immediate process. On Windows, this does not affect child processes spawned by git (e.g. git-remote-https). On Unix, SIGTERM to the parent may not always propagate to all descendants. Add a killProcessTree() helper that: - On Windows: uses taskkill /T /F to kill the entire process tree - On Unix: sends SIGTERM to the process group via kill(-pid) - Falls back to child.kill() if tree kill fails Fixes microsoft#298177
Contributor
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: @lszomoruMatched files:
|
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.
Summary
git cloneoperation,child.kill()only terminates the immediate git process but leaves child processes (e.g.git-remote-https) running in the backgroundTerminateProcessdoes not affect descendant processeskillProcessTree()helper that usestaskkill /T /Fon Windows andprocess.kill(-pid, 'SIGTERM')on Unix to kill the entire process tree when cancellation is requestedTest plan
git cloneof a large repository via the Git: Clone commandpson Unix)Fixes #298177