[
https://issues.apache.org/jira/browse/HADOOP-10662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14017773#comment-14017773
]
Alejandro Abdelnur commented on HADOOP-10662:
---------------------------------------------
Yi, the current logic, while correct seems a bit too complex. Under what
circumstances you would have an {{InputStream}} that implements
{{ByteBufferReadable}} but does not support the {{read(ByteBuffer)}} operation?
It seems to me that would be an incorrect implementation of such interface, no?
------
if (usingByteBufferRead == null) {
if (in instanceof ByteBufferReadable) {
try {
n = ((ByteBufferReadable) in).read(inBuffer);
usingByteBufferRead = Boolean.TRUE;
} catch (UnsupportedOperationException e) {
usingByteBufferRead = Boolean.FALSE;
}
} else {
usingByteBufferRead = Boolean.FALSE;
}
if (!usingByteBufferRead) {
n = readFromUnderlyingStream(inBuffer);
}
} else {
if (usingByteBufferRead) {
n = ((ByteBufferReadable) in).read(inBuffer);
} else {
n = readFromUnderlyingStream(inBuffer);
}
}
------
If we assume that any {{InputStream}} implementing {{ByteBufferReadable}}
supports the {{read(ByteBuffer)}} then the above code could be simplified to:
------
if (usingByteBufferRead == null) {
usingByteBufferRead = (in instanceof ByteBufferReadable);
}
if (usingByteBufferRead) {
n = ((ByteBufferReadable) in).read(inBuffer);
} else {
n = readFromUnderlyingStream(inBuffer);
}
------
Or am I missing something obvious?
> NullPointerException in CryptoInputStream while wrapped stream is not
> ByteBufferReadable. Add tests using normal stream.
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-10662
> URL: https://issues.apache.org/jira/browse/HADOOP-10662
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: security
> Affects Versions: fs-encryption (HADOOP-10150 and HDFS-6134)
> Reporter: Yi Liu
> Assignee: Yi Liu
> Fix For: fs-encryption (HADOOP-10150 and HDFS-6134)
>
> Attachments: HADOOP-10662.patch
>
>
> NullPointerException in CryptoInputStream while wrapped stream is not
> ByteBufferReadable.
> Add tests for crypto streams using normal stream which does not support the
> additional interfaces that the Hadoop FileSystem streams implement (Seekable,
> PositionedReadable, ByteBufferReadable, HasFileDescriptor, CanSetDropBehind,
> CanSetReadahead, HasEnhancedByteBufferAccess, Syncable, CanSetDropBehind).
--
This message was sent by Atlassian JIRA
(v6.2#6252)