diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 6387a940e0..167508b181 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -52,6 +52,8 @@ Trunk (unreleased changes) HADOOP-7994. Remove getProtocolVersion and getProtocolSignature from the client side translator and server side implementation. (jitendra) + HADOOP-8244. Improve comments on ByteBufferReadable.read. (Henry Robinson + via atm) BUG FIXES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ByteBufferReadable.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ByteBufferReadable.java index f47269c9c9..e18a115149 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ByteBufferReadable.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ByteBufferReadable.java @@ -28,18 +28,28 @@ public interface ByteBufferReadable { /** * Reads up to buf.remaining() bytes into buf. Callers should use * buf.limit(..) to control the size of the desired read. - * - * After the call, buf.position() should be unchanged, and therefore any data - * can be immediately read from buf. - * + *
+ * After a successful call, buf.position() and buf.limit() should be + * unchanged, and therefore any data can be immediately read from buf. + * buf.mark() may be cleared or updated. + * + * In the case of an exception, the values of buf.position() and buf.limit() + * are undefined, and callers should be prepared to recover from this + * eventuality. + * * Many implementations will throw {@link UnsupportedOperationException}, so * callers that are not confident in support for this method from the * underlying filesystem should be prepared to handle that exception. + * + * Implementations should treat 0-length requests as legitimate, and must not + * signal an error upon their receipt. * * @param buf - * the ByteBuffer to receive the results of the read operation + * the ByteBuffer to receive the results of the read operation. Up to + * buf.limit() - buf.position() bytes may be read. * @return the number of bytes available to read from buf - * @throws IOException if there is some error performing the read + * @throws IOException + * if there is some error performing the read */ public int read(ByteBuffer buf) throws IOException; }