Browse Source

[spotbugs] DfsReftableDatabase: extract lock to local variable

This fixes UL_UNRELEASED_LOCK_EXCEPTION_PATH raised by spotbugs in
#DfsReftableDatabase and #clearCache.

Change-Id: Ifd3189288d2a8e64139c02cd105eb335fa2f68cf
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v5.11.0.202102031030-m2
Matthias Sohn 3 years ago
parent
commit
39cbc574d1

+ 7
- 4
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReftableDatabase.java View File

import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;


import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.annotations.Nullable;
reftableDatabase = new ReftableDatabase() { reftableDatabase = new ReftableDatabase() {
@Override @Override
public MergedReftable openMergedReftable() throws IOException { public MergedReftable openMergedReftable() throws IOException {
DfsReftableDatabase.this.getLock().lock();
Lock l = DfsReftableDatabase.this.getLock();
l.lock();
try { try {
return new MergedReftable(stack().readers()); return new MergedReftable(stack().readers());
} finally { } finally {
DfsReftableDatabase.this.getLock().unlock();
l.unlock();
} }
} }
}; };


@Override @Override
void clearCache() { void clearCache() {
getLock().lock();
ReentrantLock l = getLock();
l.lock();
try { try {
if (ctx != null) { if (ctx != null) {
ctx.close(); ctx.close();
stack = null; stack = null;
} }
} finally { } finally {
getLock().unlock();
l.unlock();
} }
} }



Loading…
Cancel
Save