Merge -r 1238840:1238841 from trunk to branch-0.23. Fixes: HADOOP-8006

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1238845 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Joseph Evans 2012-01-31 22:47:34 +00:00
parent b8fbf25ace
commit 714a38a619
2 changed files with 31 additions and 4 deletions

View File

@ -90,6 +90,9 @@ Release 0.23.1 - Unreleased
OPTIMIZATIONS OPTIMIZATIONS
BUG FIXES BUG FIXES
HADOOP-8006 TestFSInputChecker is failing in trunk.
(Daryn Sharp via bobby)
HADOOP-7998. CheckFileSystem does not correctly honor setVerifyChecksum HADOOP-7998. CheckFileSystem does not correctly honor setVerifyChecksum
(Daryn Sharp via bobby) (Daryn Sharp via bobby)

View File

@ -119,7 +119,6 @@ public abstract class ChecksumFileSystem extends FilterFileSystem {
private static final int HEADER_LENGTH = 8; private static final int HEADER_LENGTH = 8;
private int bytesPerSum = 1; private int bytesPerSum = 1;
private long fileLen = -1L;
public ChecksumFSInputChecker(ChecksumFileSystem fs, Path file) public ChecksumFSInputChecker(ChecksumFileSystem fs, Path file)
throws IOException { throws IOException {
@ -244,6 +243,24 @@ public abstract class ChecksumFileSystem extends FilterFileSystem {
} }
return nread; return nread;
} }
}
private static class FSDataBoundedInputStream extends FSDataInputStream {
private FileSystem fs;
private Path file;
private long fileLen = -1L;
FSDataBoundedInputStream(FileSystem fs, Path file, InputStream in)
throws IOException {
super(in);
this.fs = fs;
this.file = file;
}
@Override
public boolean markSupported() {
return false;
}
/* Return the file length */ /* Return the file length */
private long getFileLength() throws IOException { private long getFileLength() throws IOException {
@ -304,9 +321,16 @@ public abstract class ChecksumFileSystem extends FilterFileSystem {
*/ */
@Override @Override
public FSDataInputStream open(Path f, int bufferSize) throws IOException { public FSDataInputStream open(Path f, int bufferSize) throws IOException {
return verifyChecksum FileSystem fs;
? new FSDataInputStream(new ChecksumFSInputChecker(this, f, bufferSize)) InputStream in;
: getRawFileSystem().open(f, bufferSize); if (verifyChecksum) {
fs = this;
in = new ChecksumFSInputChecker(this, f, bufferSize);
} else {
fs = getRawFileSystem();
in = fs.open(f, bufferSize);
}
return new FSDataBoundedInputStream(fs, f, in);
} }
/** {@inheritDoc} */ /** {@inheritDoc} */