HADOOP-10130. RawLocalFS pread does not track FileSystem Statistics (Binglin Chang via Colin Patrick McCabe)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1547119 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b128742363
commit
137bf488a5
|
@ -225,6 +225,9 @@ Release 2.2.1 - UNRELEASED
|
||||||
HADOOP-9114. After defined the dfs.checksum.type as the NULL, write file and hflush will
|
HADOOP-9114. After defined the dfs.checksum.type as the NULL, write file and hflush will
|
||||||
through java.lang.ArrayIndexOutOfBoundsException (Sathish via umamahesh)
|
through java.lang.ArrayIndexOutOfBoundsException (Sathish via umamahesh)
|
||||||
|
|
||||||
|
HADOOP-10130. RawLocalFS::LocalFSFileInputStream.pread does not track
|
||||||
|
FS::Statistics (Binglin Chang via Colin Patrick McCabe)
|
||||||
|
|
||||||
Release 2.2.0 - 2013-10-13
|
Release 2.2.0 - 2013-10-13
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -83,39 +83,6 @@ public class RawLocalFileSystem extends FileSystem {
|
||||||
setConf(conf);
|
setConf(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
class TrackingFileInputStream extends FileInputStream {
|
|
||||||
public TrackingFileInputStream(File f) throws IOException {
|
|
||||||
super(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int read() throws IOException {
|
|
||||||
int result = super.read();
|
|
||||||
if (result != -1) {
|
|
||||||
statistics.incrementBytesRead(1);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int read(byte[] data) throws IOException {
|
|
||||||
int result = super.read(data);
|
|
||||||
if (result != -1) {
|
|
||||||
statistics.incrementBytesRead(result);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int read(byte[] data, int offset, int length) throws IOException {
|
|
||||||
int result = super.read(data, offset, length);
|
|
||||||
if (result != -1) {
|
|
||||||
statistics.incrementBytesRead(result);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************
|
/*******************************************************
|
||||||
* For open()'s FSInputStream.
|
* For open()'s FSInputStream.
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
|
@ -124,7 +91,7 @@ public class RawLocalFileSystem extends FileSystem {
|
||||||
private long position;
|
private long position;
|
||||||
|
|
||||||
public LocalFSFileInputStream(Path f) throws IOException {
|
public LocalFSFileInputStream(Path f) throws IOException {
|
||||||
this.fis = new TrackingFileInputStream(pathToFile(f));
|
fis = new FileInputStream(pathToFile(f));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -159,6 +126,7 @@ public class RawLocalFileSystem extends FileSystem {
|
||||||
int value = fis.read();
|
int value = fis.read();
|
||||||
if (value >= 0) {
|
if (value >= 0) {
|
||||||
this.position++;
|
this.position++;
|
||||||
|
statistics.incrementBytesRead(1);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
} catch (IOException e) { // unexpected exception
|
} catch (IOException e) { // unexpected exception
|
||||||
|
@ -172,6 +140,7 @@ public class RawLocalFileSystem extends FileSystem {
|
||||||
int value = fis.read(b, off, len);
|
int value = fis.read(b, off, len);
|
||||||
if (value > 0) {
|
if (value > 0) {
|
||||||
this.position += value;
|
this.position += value;
|
||||||
|
statistics.incrementBytesRead(value);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
} catch (IOException e) { // unexpected exception
|
} catch (IOException e) { // unexpected exception
|
||||||
|
@ -184,7 +153,11 @@ public class RawLocalFileSystem extends FileSystem {
|
||||||
throws IOException {
|
throws IOException {
|
||||||
ByteBuffer bb = ByteBuffer.wrap(b, off, len);
|
ByteBuffer bb = ByteBuffer.wrap(b, off, len);
|
||||||
try {
|
try {
|
||||||
return fis.getChannel().read(bb, position);
|
int value = fis.getChannel().read(bb, position);
|
||||||
|
if (value > 0) {
|
||||||
|
statistics.incrementBytesRead(value);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new FSError(e);
|
throw new FSError(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,7 @@ public abstract class FCStatisticsBaseTest {
|
||||||
FSDataInputStream fstr = fc.open(filePath);
|
FSDataInputStream fstr = fc.open(filePath);
|
||||||
byte[] buf = new byte[blockSize];
|
byte[] buf = new byte[blockSize];
|
||||||
int bytesRead = fstr.read(buf, 0, blockSize);
|
int bytesRead = fstr.read(buf, 0, blockSize);
|
||||||
|
fstr.read(0, buf, 0, blockSize);
|
||||||
Assert.assertEquals(blockSize, bytesRead);
|
Assert.assertEquals(blockSize, bytesRead);
|
||||||
verifyReadBytes(stats);
|
verifyReadBytes(stats);
|
||||||
verifyWrittenBytes(stats);
|
verifyWrittenBytes(stats);
|
||||||
|
|
|
@ -47,7 +47,8 @@ public class TestLocalFsFCStatistics extends FCStatisticsBaseTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void verifyReadBytes(Statistics stats) {
|
protected void verifyReadBytes(Statistics stats) {
|
||||||
Assert.assertEquals(blockSize, stats.getBytesRead());
|
// one blockSize for read, one for pread
|
||||||
|
Assert.assertEquals(2*blockSize, stats.getBytesRead());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue