PackedBatchRefUpdate#execute: reduce nesting of try-catch blocks

Change-Id: I7ddf20fcbf4971ee908b20d8df9d6328ce9f9f1b
This commit is contained in:
Matthias Sohn 2023-04-18 11:00:54 +02:00
parent 8f8bc703e9
commit f1a9adf7da
2 changed files with 18 additions and 23 deletions

View File

@ -158,6 +158,7 @@ public void execute(RevWalk walk, ProgressMonitor monitor,
} }
Map<String, LockFile> locks = null; Map<String, LockFile> locks = null;
LockFile packedRefsLock = null;
refdb.inProcessPackedRefsLock.lock(); refdb.inProcessPackedRefsLock.lock();
try { try {
// During clone locking isn't needed since no refs exist yet. // During clone locking isn't needed since no refs exist yet.
@ -168,35 +169,29 @@ public void execute(RevWalk walk, ProgressMonitor monitor,
if (locks == null) { if (locks == null) {
return; return;
} }
try { refdb.pack(locks);
refdb.pack(locks);
} catch (LockFailedException e) {
lockFailure(pending.get(0), pending);
return;
}
} }
LockFile packedRefsLock = refdb.lockPackedRefs(); packedRefsLock = refdb.lockPackedRefsOrThrow();
if (packedRefsLock == null) { PackedRefList oldPackedList = refdb.refreshPackedRefs();
lockFailure(pending.get(0), pending); RefList<Ref> newRefs = applyUpdates(walk, oldPackedList, pending);
if (newRefs == null) {
return; return;
} }
try { refdb.commitPackedRefs(packedRefsLock, newRefs, oldPackedList,
PackedRefList oldPackedList = refdb.refreshPackedRefs(); true);
RefList<Ref> newRefs = applyUpdates(walk, oldPackedList, pending); } catch (LockFailedException e) {
if (newRefs == null) { lockFailure(pending.get(0), pending);
return; return;
}
refdb.commitPackedRefs(packedRefsLock, newRefs, oldPackedList,
true);
} finally {
// This will be no-op if commitPackedRefs is successful as it
// will remove the lock file (by renaming over real file).
packedRefsLock.unlock();
}
} finally { } finally {
try { try {
unlockAll(locks); unlockAll(locks);
if (packedRefsLock != null) {
// This will be no-op if commitPackedRefs is successful as
// it will remove the lock file (by renaming over real
// file).
packedRefsLock.unlock();
}
} finally { } finally {
refdb.inProcessPackedRefsLock.unlock(); refdb.inProcessPackedRefsLock.unlock();
} }

View File

@ -853,7 +853,7 @@ LockFile lockPackedRefs() throws IOException {
return null; return null;
} }
private LockFile lockPackedRefsOrThrow() throws IOException { LockFile lockPackedRefsOrThrow() throws IOException {
LockFile lck = lockPackedRefs(); LockFile lck = lockPackedRefs();
if (lck == null) { if (lck == null) {
throw new LockFailedException(packedRefsFile); throw new LockFailedException(packedRefsFile);