summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2023-02-22 21:04:31 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2023-02-22 21:05:55 +0100
commitf4eda3360a637beb3bc172810d9f9d3abec4360c (patch)
tree05bd53bcd50d9e897538408a91445663938d4bcd /org.eclipse.jgit
parentdcd6367391b02e6cf70fe73e1cb76a1d656e988a (diff)
parent636f377e4ebfb2e35d432b040a91b11083add923 (diff)
downloadjgit-f4eda3360a637beb3bc172810d9f9d3abec4360c.tar.gz
jgit-f4eda3360a637beb3bc172810d9f9d3abec4360c.zip
Merge branch 'stable-6.3' into stable-6.4
* stable-6.3: If tryLock fails to get the lock another gc has it Fix GcConcurrentTest#testInterruptGc Don't swallow IOException in GC.PidLock#lock Check if FileLock is valid before using or releasing it Change-Id: I5af34c92e423a651db53b4dc45ed844d5f39910d
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java10
1 files changed, 5 insertions, 5 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
index 080af97cbc..de01168195 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
@@ -1631,7 +1631,7 @@ public class GC {
pidFile = repo.getDirectory().toPath().resolve(GC_PID);
}
- boolean lock() {
+ boolean lock() throws IOException {
if (Files.exists(pidFile)) {
Instant mtime = FS.DETECTED
.lastModifiedInstant(pidFile.toFile());
@@ -1649,8 +1649,8 @@ public class GC {
f = new RandomAccessFile(pidFile.toFile(), "rw"); //$NON-NLS-1$
channel = f.getChannel();
lock = channel.tryLock();
- if (lock == null) {
- failedToLock();
+ if (lock == null || !lock.isValid()) {
+ gcAlreadyRunning();
return false;
}
channel.write(ByteBuffer
@@ -1670,7 +1670,7 @@ public class GC {
JGitText.get().closePidLockFailed, pidFile),
e1);
}
- return false;
+ throw e;
}
return true;
}
@@ -1728,7 +1728,7 @@ public class GC {
public void close() {
boolean wasLocked = false;
try {
- if (lock != null) {
+ if (lock != null && lock.isValid()) {
lock.release();
wasLocked = true;
}