]> source.dussan.org Git - jgit.git/commitdiff
Ensure root cause of lock creation failures is logged 24/147524/3
authorMatthias Sohn <matthias.sohn@sap.com>
Mon, 12 Aug 2019 05:14:54 +0000 (07:14 +0200)
committerMatthias Sohn <matthias.sohn@sap.com>
Mon, 12 Aug 2019 10:17:11 +0000 (12:17 +0200)
Change-Id: I91cdf1e085a29c0aabd6d22c6ebe848b2d75f42c
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java

index 8795329bf92ee1eaa6e50ee519b88c68e261db72..03b94ee118ac1755a895d54ec116a2d8847b4343 100644 (file)
@@ -48,6 +48,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.nio.charset.Charset;
+import java.nio.file.FileAlreadyExistsException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -422,7 +423,7 @@ public class FS_POSIX extends FS {
         * An implementation of the File#createNewFile() semantics which can create
         * a unique file atomically also on NFS. If the config option
         * {@code core.supportsAtomicCreateNewFile = true} (which is the default)
-        * then simply File#createNewFile() is called.
+        * then simply Files#createFile() is called.
         *
         * But if {@code core.supportsAtomicCreateNewFile = false} then after
         * successful creation of the lock file a hard link to that lock file is
@@ -443,14 +444,17 @@ public class FS_POSIX extends FS {
         */
        @Override
        public LockToken createNewFileAtomic(File file) throws IOException {
-               if (!file.createNewFile()) {
+               Path path;
+               try {
+                       path = file.toPath();
+                       Files.createFile(path);
+               } catch (FileAlreadyExistsException e) {
                        return token(false, null);
                }
                if (supportsAtomicCreateNewFile() || !supportsUnixNLink) {
                        return token(true, null);
                }
                Path link = null;
-               Path path = file.toPath();
                try {
                        link = Files.createLink(Paths.get(uniqueLinkPath(file)), path);
                        Integer nlink = (Integer) (Files.getAttribute(path,