Fix filelock if flock not supported #2402
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.
Fix #2399 (cc @jeffliu-LL)
On unix,
filelock
checks iffcntl
is available. If it is,filelock.Filelock
is in fact aUnixFileLock
which usesfcntl.flock
to acquire/release the lock. Since it's a system call, the lock is supposed to be much more robust (e.g. does not rely on file existence or not). The problem is that iffcntl
is available but at least one partition or filesystem does not support it, aNotImplementedError
exception is raised with message"FileSystem does not appear to support flock; use SoftFileLock instead"
.This PR fixes usage of
filelok
by catching this NotImplementedError when it happens and defaulting back to aSoftFileLock
. This is a weaker solution but for our use case it should be fine (+ it's already the filelock used by default on win32).