From 3e2984bcb9b07e573b583b56fd8cfec64c576751 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Thu, 17 Dec 2020 15:33:31 +0100 Subject: [PATCH] tools/process_locker: Decrement writer count in drop handler of ProcessLockSharedGuard. We use a counter to determine if we can unlock the file again, but we never actually decremented the writer count, so we held the lock forever. This fixes the issue that we could not start a garbage collect after a reload, as long as the old process is still running, even when that process has no active backup anymore but another long running task (e.g. file download, terminal, etc.). Signed-off-by: Dominik Csapak --- src/tools/process_locker.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/process_locker.rs b/src/tools/process_locker.rs index 56f8c514..6ab2e1c1 100644 --- a/src/tools/process_locker.rs +++ b/src/tools/process_locker.rs @@ -55,7 +55,9 @@ impl Drop for ProcessLockSharedGuard { if let Err(err) = nix::fcntl::fcntl(data.file.as_raw_fd(), nix::fcntl::FcntlArg::F_SETLKW(&op)) { panic!("unable to drop writer lock - {}", err); } - data.writers = 0; + } + if data.writers > 0 { + data.writers -= 1; } } }