From 3b27a2ee6a4381bb8520a2e2c65c90e3c0e06e6c Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Thu, 8 Jul 2021 12:14:52 +0100 Subject: [PATCH] Add debug logs to project lock mechanism --- .../uk/ac/ic/wlgitbridge/data/ProjectLockImpl.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ProjectLockImpl.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ProjectLockImpl.java index 34342ae1bf..ee6729e916 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ProjectLockImpl.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ProjectLockImpl.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import uk.ac.ic.wlgitbridge.util.Log; /** * Created by Winston on 20/11/14. @@ -35,29 +36,40 @@ public class ProjectLockImpl implements ProjectLock { @Override public void lockForProject(String projectName) { + Log.debug("[{}] taking project lock", projectName); getLockForProjectName(projectName).lock(); + Log.debug("[{}] taking reentrant lock", projectName); rlock.lock(); + Log.debug("[{}] taken locks", projectName); } @Override public void unlockForProject(String projectName) { + Log.debug("[{}] releasing project lock", projectName); getLockForProjectName(projectName).unlock(); + Log.debug("[{}] releasing reentrant lock", projectName); rlock.unlock(); + Log.debug("[{}] released locks", projectName); if (waiting) { + Log.debug("[{}] waiting for remaining threads", projectName); trySignal(); } } private void trySignal() { int threads = rwlock.getReadLockCount(); + Log.debug("-> waiting for {} threads", threads); if (waiter != null && threads > 0) { waiter.threadsRemaining(threads); } + Log.debug("-> finished waiting for threads"); } public void lockAll() { + Log.debug("-> locking all threads"); waiting = true; trySignal(); + Log.debug("-> locking reentrant write lock"); wlock.lock(); }