Ver código fonte

Log reason for ignoring pack when IOException occurred

This should help to identify the root cause of the problem discussed on
the Gerrit list [1].

[1] https://groups.google.com/forum/#!topic/repo-discuss/Qdmbl-YZ4NU

Change-Id: I871f70e4bb1227952e1544b789013583b14e2b96
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v3.6.2.201501210735-r
Matthias Sohn 9 anos atrás
pai
commit
9b86ebb4f6

+ 1
- 0
org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties Ver arquivo

exceptionCaughtDuringExecutionOfTagCommand=Exception caught during execution of tag command exceptionCaughtDuringExecutionOfTagCommand=Exception caught during execution of tag command
exceptionOccurredDuringAddingOfOptionToALogCommand=Exception occurred during adding of {0} as option to a Log command exceptionOccurredDuringAddingOfOptionToALogCommand=Exception occurred during adding of {0} as option to a Log command
exceptionOccurredDuringReadingOfGIT_DIR=Exception occurred during reading of $GIT_DIR/{0}. {1} exceptionOccurredDuringReadingOfGIT_DIR=Exception occurred during reading of $GIT_DIR/{0}. {1}
exceptionWhileReadingPack=ERROR: Exception caught while accessing pack file {0}, the pack file might be corrupt
expectedACKNAKFoundEOF=Expected ACK/NAK, found EOF expectedACKNAKFoundEOF=Expected ACK/NAK, found EOF
expectedACKNAKGot=Expected ACK/NAK, got: {0} expectedACKNAKGot=Expected ACK/NAK, got: {0}
expectedBooleanStringValue=Expected boolean string value expectedBooleanStringValue=Expected boolean string value

+ 1
- 0
org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java Ver arquivo

/***/ public String exceptionCaughtDuringExecutionOfTagCommand; /***/ public String exceptionCaughtDuringExecutionOfTagCommand;
/***/ public String exceptionOccurredDuringAddingOfOptionToALogCommand; /***/ public String exceptionOccurredDuringAddingOfOptionToALogCommand;
/***/ public String exceptionOccurredDuringReadingOfGIT_DIR; /***/ public String exceptionOccurredDuringReadingOfGIT_DIR;
/***/ public String exceptionWhileReadingPack;
/***/ public String expectedACKNAKFoundEOF; /***/ public String expectedACKNAKFoundEOF;
/***/ public String expectedACKNAKGot; /***/ public String expectedACKNAKGot;
/***/ public String expectedBooleanStringValue; /***/ public String expectedBooleanStringValue;

+ 18
- 2
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java Ver arquivo

import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
p.resolve(matches, id, RESOLVE_ABBREV_LIMIT); p.resolve(matches, id, RESOLVE_ABBREV_LIMIT);
} catch (IOException e) { } catch (IOException e) {
// Assume the pack is corrupted. // Assume the pack is corrupted.
//
logCorruptPackError(e, p);
removePack(p); removePack(p);
} }
if (matches.size() > RESOLVE_ABBREV_LIMIT) if (matches.size() > RESOLVE_ABBREV_LIMIT)
continue SEARCH; continue SEARCH;
} catch (IOException e) { } catch (IOException e) {
// Assume the pack is corrupted. // Assume the pack is corrupted.
logCorruptPackError(e, p);
removePack(p); removePack(p);
} }
} }
continue SEARCH; continue SEARCH;
} catch (IOException e) { } catch (IOException e) {
// Assume the pack is corrupted. // Assume the pack is corrupted.
logCorruptPackError(e, p);
removePack(p); removePack(p);
} }
} }
continue SEARCH; continue SEARCH;
} catch (IOException e) { } catch (IOException e) {
// Assume the pack is corrupted. // Assume the pack is corrupted.
//
logCorruptPackError(e, p);
removePack(p); removePack(p);
} }
} }
h.db.selectObjectRepresentation(packer, otp, curs); h.db.selectObjectRepresentation(packer, otp, curs);
} }


private static void logCorruptPackError(IOException e, PackFile p) {
StringBuilder buf = new StringBuilder(MessageFormat.format(
JGitText.get().exceptionWhileReadingPack,
p.getPackFile().getAbsolutePath()));
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
buf.append('\n');
buf.append(sw.toString());
// TODO instead of syserr we should use a logging framework
System.err.println(buf.toString());
}

@Override @Override
InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id, InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id,
boolean createDuplicate) throws IOException { boolean createDuplicate) throws IOException {

Carregando…
Cancelar
Salvar