From 59a2dc801ce12b0522273e4403983d6ee4968c33 Mon Sep 17 00:00:00 2001 From: Marc Strapetz Date: Mon, 24 Feb 2014 18:38:20 +0100 Subject: [PATCH] Files should be deleted with "retry" option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 ‌ --- .../jgit/internal/storage/file/ObjectDirectory.java | 10 +++++----- .../internal/storage/file/ObjectDirectoryInserter.java | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) 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 434eadf5f..882f5c8a4 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 c55c60a20..c3e6ad963 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); } }