1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-03-04 10:39:50 +00:00

Merge pull request #7265 from ThomasWaldmann/fix-locking-1.2

Fix locking (1.2-maint)
This commit is contained in:
TW 2023-01-19 18:15:28 +01:00 committed by GitHub
commit 48713ebff6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 3 deletions

View file

@ -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)

View file

@ -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