[Medium] Extend Locks through entire install process #796
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.
Info
volta install
process, while also ensuring that we don't get deadlocks from theensure_fetched
lock (which is needed because it can be called separately by the shims).VoltaLock
is to be a per-process lock, where we prevent other Volta processes from modifying the Volta directory, but allow the current one to make changes.Changes
VoltaLock
type to keep a count of active locks and only release the file lock when all of them have been released—essentially a refcount style of locking.install
function acquires and keeps a lock through the entirevolta install
process.regenerate_shims_for_dir
function, to prevent overlapping shim modifications.Drop
impl to show when the lock is dropped.Tested