From: Marc Strapetz Date: Mon, 24 Feb 2014 17:38:20 +0000 (+0100) Subject: Files should be deleted with "retry" option X-Git-Tag: v3.4.0.201405051725-m7~73^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F61%2F22461%2F3;p=jgit.git Files should be deleted with "retry" option Some of our Windows users have reported sporadic file system access problems related to ObjectDirectory(Inserter) file deletion code in combination with antiviral/firewall tools. For one of these users the problem was fairly reproducible and changing deletion to RETRY solved his problem. Change-Id: I1e4001d5557fca693b7bac401268599467cb0c9e Signed-off-by: Marc Strapetz ‌ --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java index 434eadf5fa..882f5c8a45 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java @@ -557,11 +557,11 @@ public class ObjectDirectory extends FileObjectDatabase { // If the object is already in the repository, remove temporary file. // if (unpackedObjectCache.isUnpacked(id)) { - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); return InsertLooseObjectResult.EXISTS_LOOSE; } if (!createDuplicate && has(id)) { - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); return InsertLooseObjectResult.EXISTS_PACKED; } @@ -571,7 +571,7 @@ public class ObjectDirectory extends FileObjectDatabase { // that already exists. We can't be sure renameTo() would // fail on all platforms if dst exists, so we check first. // - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); return InsertLooseObjectResult.EXISTS_LOOSE; } if (tmp.renameTo(dst)) { @@ -592,7 +592,7 @@ public class ObjectDirectory extends FileObjectDatabase { } if (!createDuplicate && has(id)) { - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); return InsertLooseObjectResult.EXISTS_PACKED; } @@ -601,7 +601,7 @@ public class ObjectDirectory extends FileObjectDatabase { // either. We really don't know what went wrong, so // fail. // - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); return InsertLooseObjectResult.FAILURE; } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java index c55c60a208..c3e6ad9630 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java @@ -182,7 +182,7 @@ class ObjectDirectoryInserter extends ObjectInserter { return tmp; } finally { if (delete) - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); } } @@ -211,7 +211,7 @@ class ObjectDirectoryInserter extends ObjectInserter { return tmp; } finally { if (delete) - FileUtils.delete(tmp); + FileUtils.delete(tmp, FileUtils.RETRY); } }