Use filelock to lock the file cache #6471
Merged
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.
Fixes #6030, which I suspect is a significant contributor to "poetry hangs" complaints.
cachecontrol
useslockfile
to create lock files. In the event that poetry exits while one of those files exists (eg because the impatient user goes Ctrl-C) the lockfile is not removed. That causes subsequent runs to block when trying to download the thing that it had been in the middle of dowloading.FileLock
from thefilelock
package does not have this undesirable property, when the process exits the lock is released and the next run can acquire it.(
filelock
was already in the poetry dependency tree viavirtualenv
).Note to anyone who tests this:
filelock
also doesn't remove the.lock
file when it is done. So if you test this branch and then revert to a version of poetry usinglockfile
, you will experience the original issue. You'll want to do something likefind ~/.cache/pypoetry -name '*.lock' -delete
to get going again.