diff --git a/src/borg/locking.py b/src/borg/locking.py index ecd6d27ca..4192f1f10 100644 --- a/src/borg/locking.py +++ b/src/borg/locking.py @@ -139,7 +139,7 @@ class ExclusiveLock: timer = TimeoutTimer(timeout, sleep).start() while True: try: - os.rename(temp_path, self.path) + os.replace(temp_path, self.path) except OSError: # already locked if self.by_me(): return self @@ -195,7 +195,7 @@ class ExclusiveLock: host_pid, thread_str = name.rsplit('-', 1) host, pid_str = host_pid.rsplit('.', 1) pid = int(pid_str) - thread = int(thread_str) + thread = int(thread_str, 16) except ValueError: # Malformed lock name? Or just some new format we don't understand? logger.error("Found malformed lock %s in %s. Please check/fix manually.", name, self.path) diff --git a/src/borg/testsuite/locking.py b/src/borg/testsuite/locking.py index 7a0f219cd..b8fb67797 100644 --- a/src/borg/testsuite/locking.py +++ b/src/borg/testsuite/locking.py @@ -157,8 +157,11 @@ class TestExclusiveLock: exception_counter = SynchronizedCounter() print_lock = ThreadingLock() thread = None + host_id, process_id = "differenthost", 1234 for thread_id in range(RACE_TEST_NUM_THREADS): - thread = Thread(target=acquire_release_loop, args=(('foo', thread_id, 0), RACE_TEST_DURATION, thread_id, lock_owner_counter, exception_counter, print_lock, thread)) + thread = Thread(target=acquire_release_loop, + args=((host_id, process_id, thread_id), RACE_TEST_DURATION, thread_id, + lock_owner_counter, exception_counter, print_lock, thread)) thread.start() thread.join() # joining the last thread