If accessing a pack throws FileNotFoundException the pack was deleted and we need to remove it from the pack list. This can be caused e.g. by git gc. Change-Id: I5d10f87f364dadbbdbfb61b6b2cbdee9c7457f3d Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v3.7.0.201502031740-rc1
@@ -392,6 +392,7 @@ packObjectCountMismatch=Pack object count mismatch: pack {0} index {1}: {2} | |||
packRefs=Pack refs | |||
packSizeNotSetYet=Pack size not yet set since it has not yet been received | |||
packTooLargeForIndexVersion1=Pack too large for index version 1 | |||
packWasDeleted=Pack file {0} was deleted, removing it from pack list | |||
packWriterStatistics=Total {0,number,#0} (delta {1,number,#0}), reused {2,number,#0} (delta {3,number,#0}) | |||
panicCantRenameIndexFile=Panic: index file {0} must be renamed to replace {1}; until then repository is corrupt | |||
patchApplyException=Cannot apply: {0} |
@@ -451,6 +451,7 @@ public class JGitText extends TranslationBundle { | |||
/***/ public String packRefs; | |||
/***/ public String packSizeNotSetYet; | |||
/***/ public String packTooLargeForIndexVersion1; | |||
/***/ public String packWasDeleted; | |||
/***/ public String packWriterStatistics; | |||
/***/ public String panicCantRenameIndexFile; | |||
/***/ public String patchApplyException; |
@@ -557,6 +557,9 @@ public class ObjectDirectory extends FileObjectDatabase { | |||
tmpl = JGitText.get().corruptPack; | |||
// Assume the pack is corrupted, and remove it from the list. | |||
removePack(p); | |||
} else if (e instanceof FileNotFoundException) { | |||
tmpl = JGitText.get().packWasDeleted; | |||
removePack(p); | |||
} else { | |||
tmpl = JGitText.get().exceptionWhileReadingPack; | |||
// Don't remove the pack from the list, as the error may be |