Procházet zdrojové kódy

Merge changes I368af61a,I2400fe5f

* changes:
  Remove pack from list when file handle is stale
  Lower log level to warn for handled pack errors
tags/v4.0.0.201505050340-m2
Matthias Sohn před 9 roky
rodič
revize
7e0ebb8e29

+ 1
- 0
org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties Zobrazit soubor

@@ -394,6 +394,7 @@ packfileCorruptionDetected=Packfile corruption detected: {0}
packFileInvalid=Pack file invalid: {0}
packfileIsTruncated=Packfile {0} is truncated.
packfileIsTruncatedNoParam=Packfile is truncated.
packHandleIsStale=Pack file {0} handle is stale, removing it from pack list
packHasUnresolvedDeltas=pack has unresolved deltas
packingCancelledDuringObjectsWriting=Packing cancelled during objects writing
packObjectCountMismatch=Pack object count mismatch: pack {0} index {1}: {2}

+ 1
- 0
org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java Zobrazit soubor

@@ -453,6 +453,7 @@ public class JGitText extends TranslationBundle {
/***/ public String packFileInvalid;
/***/ public String packfileIsTruncated;
/***/ public String packfileIsTruncatedNoParam;
/***/ public String packHandleIsStale;
/***/ public String packHasUnresolvedDeltas;
/***/ public String packingCancelledDuringObjectsWriting;
/***/ public String packObjectCountMismatch;

+ 21
- 6
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java Zobrazit soubor

@@ -114,6 +114,8 @@ public class ObjectDirectory extends FileObjectDatabase {
/** Maximum number of candidates offered as resolutions of abbreviation. */
private static final int RESOLVE_ABBREV_LIMIT = 256;

private static final String STALE_FILE_HANDLE_MSG = "stale file handle"; //$NON-NLS-1$

private final Config config;

private final File objects;
@@ -554,22 +556,35 @@ public class ObjectDirectory extends FileObjectDatabase {
}

private void handlePackError(IOException e, PackFile p) {
String tmpl;
String warnTmpl = null;
if ((e instanceof CorruptObjectException)
|| (e instanceof PackInvalidException)) {
tmpl = JGitText.get().corruptPack;
warnTmpl = 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;
warnTmpl = JGitText.get().packWasDeleted;
removePack(p);
} else if (e.getMessage() != null
&& e.getMessage().toLowerCase().contains(STALE_FILE_HANDLE_MSG)) {
warnTmpl = JGitText.get().packHandleIsStale;
removePack(p);
}
if (warnTmpl != null) {
if (LOG.isDebugEnabled()) {
LOG.debug(MessageFormat.format(warnTmpl,
p.getPackFile().getAbsolutePath()), e);
} else {
LOG.warn(MessageFormat.format(warnTmpl,
p.getPackFile().getAbsolutePath()));
}
} else {
tmpl = JGitText.get().exceptionWhileReadingPack;
// Don't remove the pack from the list, as the error may be
// transient.
LOG.error(MessageFormat.format(
JGitText.get().exceptionWhileReadingPack, p.getPackFile()
.getAbsolutePath()), e);
}
LOG.error(MessageFormat.format(tmpl,
p.getPackFile().getAbsolutePath()), e);
}

@Override

Načítá se…
Zrušit
Uložit