gh-74585: Fix race condition in shutil.copyfile #136836
Open
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.
This PR fixes a race condition in
shutil.copyfile
(there are several othershutil
functions that should also be fixed. The current state is that onlycopyfile
is fixed.) Unittests are passing but there are a few things that I'd like to look into:Reading through the issue, the following questions were asked and should be looked into:
copyfile
changes for operations that are duplicated/should be done inside of the openers. For instance, this PR presently stats a file twice. I think that's unnecessary.shutil
functions: giampaulo:All copy* functions and move() are subjects to race conditions (the only exception is rmtree()).
copyfile
is good in and of itself, regardless of whether we fix the rest of theshutil
functions. I'll take a look at how similar they are before commenting on this.This is a forward-port of #1659 from @pkmoore