diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java index e004f9090..d33148152 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java @@ -50,6 +50,7 @@ import java.io.EOFException; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InterruptedIOException; import java.io.RandomAccessFile; @@ -635,6 +636,12 @@ private void doOpen() throws IOException { // don't invalidate the pack, we are interrupted from another thread openFail(false); throw e; + } catch (FileNotFoundException fn) { + // don't invalidate the pack if opening an existing file failed + // since it may be related to a temporary lack of resources (e.g. + // max open files) + openFail(!packFile.exists()); + throw fn; } catch (IOException ioe) { openFail(true); throw ioe;