From c89a11213e7c3c39548f2f9b9a16c68b78783df8 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 7 Dec 2017 17:25:58 +0900 Subject: [PATCH] DfsBlockCache#creditSpace: release clockLock in finally block Enclose the call to getStat in a `try`, and release the previously acquired lock in the `finally`. This prevents that the lock is left unreleased in the case of an exception being raised in getStat. Change-Id: I17b4cd134dae887e23a1165253be0ac2d4fd452c Signed-off-by: David Pursehouse --- .../eclipse/jgit/internal/storage/dfs/DfsBlockCache.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java index a96be4a7f..03947d839 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsBlockCache.java @@ -418,8 +418,11 @@ public final class DfsBlockCache { private void creditSpace(int credit, DfsStreamKey key) { clockLock.lock(); - getStat(liveBytes, key).addAndGet(-credit); - clockLock.unlock(); + try { + getStat(liveBytes, key).addAndGet(-credit); + } finally { + clockLock.unlock(); + } } @SuppressWarnings("unchecked")