diff options
Diffstat (limited to 'src/virtualenv/util/lock.py')
| -rw-r--r-- | src/virtualenv/util/lock.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/virtualenv/util/lock.py b/src/virtualenv/util/lock.py index 8d7215e..cf026f4 100644 --- a/src/virtualenv/util/lock.py +++ b/src/virtualenv/util/lock.py @@ -23,13 +23,16 @@ class _CountedFileLock(FileLock): self.thread_safe = RLock() def acquire(self, timeout=None, poll_interval=0.05): - with self.thread_safe: - if self.count == 0: - super().acquire(timeout, poll_interval) - self.count += 1 + if not self.thread_safe.acquire(timeout=-1 if timeout is None else timeout): + raise Timeout(self.lock_file) + if self.count == 0: + super().acquire(timeout, poll_interval) + self.count += 1 def release(self, force=False): with self.thread_safe: + if self.count > 0: + self.thread_safe.release() if self.count == 1: super().release(force=force) self.count = max(self.count - 1, 0) |
