Provide more details in exceptions thrown when packfile is invalid
Mention packfile path in exceptions thrown when we detect that a packfile is invalid and make excplicit that corrupt packs are removed from the pack list. Change-Id: I454ada5f8e69307d3f34d1c1b8f3cb87607ddf35 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
a8743df19c
commit
57644f23a1
|
@ -162,7 +162,7 @@ public void testPush_UnpackError_TruncatedPack() throws Exception {
|
|||
try {
|
||||
PacketLineIn pckin = new PacketLineIn(rawin);
|
||||
assertEquals("unpack error "
|
||||
+ JGitText.get().packfileIsTruncated,
|
||||
+ JGitText.get().packfileIsTruncatedNoParam,
|
||||
pckin.readString());
|
||||
assertEquals("ng refs/objects/A n/a (unpacker error)",
|
||||
pckin.readString());
|
||||
|
|
|
@ -146,7 +146,7 @@ couldNotRenameTemporaryIndexFileToIndex=Could not rename temporary index file to
|
|||
couldNotURLEncodeToUTF8=Could not URL encode to UTF-8
|
||||
couldNotWriteFile=Could not write file {0}
|
||||
countingObjects=Counting objects
|
||||
corruptPack=Pack file {0} is corrupt
|
||||
corruptPack=Pack file {0} is corrupt, removing it from pack list
|
||||
createBranchFailedUnknownReason=Create branch failed for unknown reason
|
||||
createBranchUnexpectedResult=Create branch returned unexpected result {0}
|
||||
createNewFileFailed=Could not create new file {0}
|
||||
|
@ -381,14 +381,15 @@ openFilesMustBeAtLeast1=Open files must be >= 1
|
|||
openingConnection=Opening connection
|
||||
operationCanceled=Operation {0} was canceled
|
||||
outputHasAlreadyBeenStarted=Output has already been started.
|
||||
packChecksumMismatch=Pack checksum mismatch
|
||||
packChecksumMismatch=Pack checksum mismatch detected for pack file {0}
|
||||
packCorruptedWhileWritingToFilesystem=Pack corrupted while writing to filesystem
|
||||
packDoesNotMatchIndex=Pack {0} does not match index
|
||||
packetSizeMustBeAtLeast=packet size {0} must be >= {1}
|
||||
packetSizeMustBeAtMost=packet size {0} must be <= {1}
|
||||
packfileCorruptionDetected=Packfile corruption detected: {0}
|
||||
packFileInvalid=Pack file invalid: {0}
|
||||
packfileIsTruncated=Packfile is truncated.
|
||||
packfileIsTruncated=Packfile {0} is truncated.
|
||||
packfileIsTruncatedNoParam=Packfile is truncated.
|
||||
packHasUnresolvedDeltas=pack has unresolved deltas
|
||||
packingCancelledDuringObjectsWriting=Packing cancelled during objects writing
|
||||
packObjectCountMismatch=Pack object count mismatch: pack {0} index {1}: {2}
|
||||
|
|
|
@ -448,6 +448,7 @@ public static JGitText get() {
|
|||
/***/ public String packfileCorruptionDetected;
|
||||
/***/ public String packFileInvalid;
|
||||
/***/ public String packfileIsTruncated;
|
||||
/***/ public String packfileIsTruncatedNoParam;
|
||||
/***/ public String packHasUnresolvedDeltas;
|
||||
/***/ public String packingCancelledDuringObjectsWriting;
|
||||
/***/ public String packObjectCountMismatch;
|
||||
|
|
|
@ -199,7 +199,7 @@ public long getCachedSize() {
|
|||
return key.cachedSize.get();
|
||||
}
|
||||
|
||||
private String getPackName() {
|
||||
String getPackName() {
|
||||
return packDesc.getFileName(PACK);
|
||||
}
|
||||
|
||||
|
|
|
@ -556,7 +556,8 @@ void copyPackAsIs(DfsPackFile pack, long length, boolean validate,
|
|||
pin(pack, 0);
|
||||
if (block.copy(0, buf, 0, 12) != 12) {
|
||||
pack.setInvalid();
|
||||
throw new IOException(JGitText.get().packfileIsTruncated);
|
||||
throw new IOException(MessageFormat.format(
|
||||
JGitText.get().packfileIsTruncated, pack.getPackName()));
|
||||
}
|
||||
md.update(buf, 0, 12);
|
||||
}
|
||||
|
@ -580,7 +581,8 @@ void copyPackAsIs(DfsPackFile pack, long length, boolean validate,
|
|||
pin(pack, position);
|
||||
if (block.copy(position, buf, 0, 20) != 20) {
|
||||
pack.setInvalid();
|
||||
throw new IOException(JGitText.get().packfileIsTruncated);
|
||||
throw new IOException(MessageFormat.format(
|
||||
JGitText.get().packfileIsTruncated, pack.getPackName()));
|
||||
}
|
||||
if (!Arrays.equals(actHash, buf)) {
|
||||
pack.setInvalid();
|
||||
|
|
|
@ -169,11 +169,13 @@ private synchronized PackIndex idx() throws IOException {
|
|||
try {
|
||||
final PackIndex idx = PackIndex.open(extFile(INDEX));
|
||||
|
||||
if (packChecksum == null)
|
||||
if (packChecksum == null) {
|
||||
packChecksum = idx.packChecksum;
|
||||
else if (!Arrays.equals(packChecksum, idx.packChecksum))
|
||||
throw new PackMismatchException(JGitText.get().packChecksumMismatch);
|
||||
|
||||
} else if (!Arrays.equals(packChecksum, idx.packChecksum)) {
|
||||
throw new PackMismatchException(MessageFormat.format(
|
||||
JGitText.get().packChecksumMismatch,
|
||||
packFile.getPath()));
|
||||
}
|
||||
loadedIdx = idx;
|
||||
} catch (IOException e) {
|
||||
invalid = true;
|
||||
|
|
|
@ -246,7 +246,9 @@ void copyPackAsIs(final PackFile pack, final long length, boolean validate,
|
|||
pin(pack, 0);
|
||||
if (window.copy(0, buf, 0, 12) != 12) {
|
||||
pack.setInvalid();
|
||||
throw new IOException(JGitText.get().packfileIsTruncated);
|
||||
throw new IOException(MessageFormat.format(
|
||||
JGitText.get().packfileIsTruncated, pack.getPackFile()
|
||||
.getPath()));
|
||||
}
|
||||
md.update(buf, 0, 12);
|
||||
}
|
||||
|
@ -270,7 +272,9 @@ void copyPackAsIs(final PackFile pack, final long length, boolean validate,
|
|||
pin(pack, position);
|
||||
if (window.copy(position, buf, 0, 20) != 20) {
|
||||
pack.setInvalid();
|
||||
throw new IOException(JGitText.get().packfileIsTruncated);
|
||||
throw new IOException(MessageFormat.format(
|
||||
JGitText.get().packfileIsTruncated, pack.getPackFile()
|
||||
.getPath()));
|
||||
}
|
||||
if (!Arrays.equals(actHash, buf)) {
|
||||
pack.setInvalid();
|
||||
|
|
|
@ -1135,7 +1135,8 @@ private int fill(final Source src, final int need) throws IOException {
|
|||
break;
|
||||
}
|
||||
if (next <= 0)
|
||||
throw new EOFException(JGitText.get().packfileIsTruncated);
|
||||
throw new EOFException(
|
||||
JGitText.get().packfileIsTruncatedNoParam);
|
||||
bAvail += next;
|
||||
}
|
||||
return bOffset;
|
||||
|
|
Loading…
Reference in New Issue