HADOOP-13017. Implementations of InputStream.read(buffer, offset, bytes) to exit 0 if bytes==0. Contributed by Steve Loughran.

This commit is contained in:
Masatake Iwasaki 2016-10-27 15:44:49 +09:00
parent e29cba61a0
commit 0bdd263d82
8 changed files with 25 additions and 1 deletions

View File

@ -968,6 +968,9 @@ public class HarFileSystem extends FileSystem {
@Override
public synchronized int read(byte[] b, int offset, int len)
throws IOException {
if (len == 0) {
return 0;
}
int newlen = len;
int ret = -1;
if (position + len > end) {

View File

@ -246,6 +246,9 @@ public class SaslInputStream extends InputStream implements ReadableByteChannel
*/
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (len == 0) {
return 0;
}
if (!useWrap) {
return inStream.read(b, off, len);
}
@ -378,4 +381,4 @@ public class SaslInputStream extends InputStream implements ReadableByteChannel
}
return bytesRead;
}
}
}

View File

@ -569,6 +569,9 @@ public class SaslRpcClient {
@Override
public synchronized int read(byte[] buf, int off, int len) throws IOException {
if (len == 0) {
return 0;
}
// fill the buffer with the next RPC message
if (unwrappedRpcBuffer.remaining() == 0) {
readNextRpcPacket();

View File

@ -74,6 +74,9 @@ public final class LimitInputStream extends FilterInputStream {
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (len == 0) {
return 0;
}
if (left == 0) {
return -1;
}

View File

@ -1832,6 +1832,9 @@ public class WebHdfsFileSystem extends FileSystem
if (runnerState == RunnerState.CLOSED) {
throw new IOException("Stream closed");
}
if (len == 0) {
return 0;
}
// Before the first read, pos and fileLength will be 0 and readBuffer
// will all be null. They will be initialized once the first connection

View File

@ -84,6 +84,9 @@ public class ThrottledInputStream extends InputStream {
/** {@inheritDoc} */
@Override
public int read(byte[] b, int off, int len) throws IOException {
if (len == 0) {
return 0;
}
throttle();
int readLen = rawStream.read(b, off, len);
if (readLen != -1) {

View File

@ -187,6 +187,9 @@ public class HttpInputStreamWithRelease extends InputStream {
@Override
public int read(byte[] b, int off, int len) throws IOException {
SwiftUtils.validateReadArgs(b, off, len);
if (len == 0) {
return 0;
}
//if the stream is already closed, then report an exception.
assumeNotReleased();
//now read in a buffer, reacting differently to different operations

View File

@ -161,6 +161,9 @@ class SwiftNativeInputStream extends FSInputStream {
public synchronized int read(byte[] b, int off, int len) throws IOException {
SwiftUtils.debug(LOG, "read(buffer, %d, %d)", off, len);
SwiftUtils.validateReadArgs(b, off, len);
if (len == 0) {
return 0;
}
int result = -1;
try {
verifyOpen();