Merge branch 'master' into stable-7.3 * master: Update maven plugins Use the same ordering/locking in delete() as C git Change-Id: Ie31317681b79a2fd281cebd16e5052b1bde394fb
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml index 8b25ff1..ebda2fd 100644 --- a/org.eclipse.jgit.packaging/pom.xml +++ b/org.eclipse.jgit.packaging/pom.xml
@@ -30,7 +30,7 @@ <properties> <java.version>17</java.version> - <tycho-version>4.0.12</tycho-version> + <tycho-version>4.0.13</tycho-version> <target-platform>jgit-4.32</target-platform> <project.build.outputTimestamp>${git.commit.time}</project.build.outputTimestamp> </properties> @@ -233,7 +233,7 @@ <plugin> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> - <version>9.0.1</version> + <version>9.0.2</version> <executions> <execution> <id>get-the-git-infos</id>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java index 05f1ef5..319a9ed 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
@@ -701,41 +701,47 @@ void delete(RefDirectoryUpdate update) throws IOException { } String name = dst.getName(); - // Write the packed-refs file using an atomic update. We might - // wind up reading it twice, before and after the lock, to ensure - // we don't miss an edit made externally. - PackedRefList packed = getPackedRefs(); - if (packed.contains(name)) { - inProcessPackedRefsLock.lock(); + // Get and keep the packed-refs lock while updating packed-refs and + // removing any loose ref + inProcessPackedRefsLock.lock(); + try { + LockFile lck = lockPackedRefsOrThrow(); try { - LockFile lck = lockPackedRefsOrThrow(); - try { + // Write the packed-refs file using an atomic update. We might + // wind up reading it twice, before and after checking if the + // ref to delete is included or not, to ensure + // we don't rely on a PackedRefList that is a result of in-memory + // or NFS caching. + PackedRefList packed = getPackedRefs(); + if (packed.contains(name)) { + // Force update our packed-refs snapshot before writing packed = refreshPackedRefs(); int idx = packed.find(name); if (0 <= idx) { commitPackedRefs(lck, packed.remove(idx), packed, true); } - } finally { - lck.unlock(); + } + + RefList<LooseRef> curLoose, newLoose; + do { + curLoose = looseRefs.get(); + int idx = curLoose.find(name); + if (idx < 0) { + break; + } + newLoose = curLoose.remove(idx); + } while (!looseRefs.compareAndSet(curLoose, newLoose)); + + int levels = levelsIn(name) - 2; + delete(logFor(name), levels); + if (dst.getStorage().isLoose()) { + deleteAndUnlock(fileFor(name), levels, update); } } finally { - inProcessPackedRefsLock.unlock(); + lck.unlock(); } - } - - RefList<LooseRef> curLoose, newLoose; - do { - curLoose = looseRefs.get(); - int idx = curLoose.find(name); - if (idx < 0) - break; - newLoose = curLoose.remove(idx); - } while (!looseRefs.compareAndSet(curLoose, newLoose)); - - int levels = levelsIn(name) - 2; - delete(logFor(name), levels); - if (dst.getStorage().isLoose()) { - deleteAndUnlock(fileFor(name), levels, update); + } finally { + inProcessPackedRefsLock.unlock(); } modCnt.incrementAndGet();
diff --git a/pom.xml b/pom.xml index 269574c..80ed03a 100644 --- a/pom.xml +++ b/pom.xml
@@ -138,10 +138,10 @@ <maven-javadoc-plugin-version>3.11.2</maven-javadoc-plugin-version> <gson-version>2.13.1</gson-version> <bouncycastle-version>1.80</bouncycastle-version> - <spotbugs-maven-plugin-version>4.9.2.0</spotbugs-maven-plugin-version> - <maven-project-info-reports-plugin-version>3.8.0</maven-project-info-reports-plugin-version> + <spotbugs-maven-plugin-version>4.9.3.0</spotbugs-maven-plugin-version> + <maven-project-info-reports-plugin-version>3.9.0</maven-project-info-reports-plugin-version> <maven-jxr-plugin-version>3.6.0</maven-jxr-plugin-version> - <maven-surefire-plugin-version>3.5.2</maven-surefire-plugin-version> + <maven-surefire-plugin-version>3.5.3</maven-surefire-plugin-version> <maven-surefire-report-plugin-version>${maven-surefire-plugin-version}</maven-surefire-report-plugin-version> <maven-compiler-plugin-version>3.14.0</maven-compiler-plugin-version> <plexus-compiler-version>2.13.0</plexus-compiler-version> @@ -305,7 +305,7 @@ <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> - <version>0.8.12</version> + <version>0.8.13</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -337,12 +337,12 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -357,7 +357,7 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> - <version>3.4.3</version> + <version>3.5.0</version> </plugin> <plugin> <groupId>org.eclipse.dash</groupId> @@ -623,7 +623,7 @@ <plugin> <groupId>io.github.git-commit-id</groupId> <artifactId>git-commit-id-maven-plugin</artifactId> - <version>9.0.1</version> + <version>9.0.2</version> <executions> <execution> <id>get-the-git-infos</id> @@ -642,7 +642,7 @@ <plugin> <groupId>org.codehaus.gmavenplus</groupId> <artifactId>gmavenplus-plugin</artifactId> - <version>4.1.1</version> + <version>4.2.0</version> <dependencies> <dependency> <groupId>org.apache.groovy</groupId>