[
https://issues.apache.org/jira/browse/HADOOP-10662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14018376#comment-14018376
]
Yi Liu commented on HADOOP-10662:
---------------------------------
Hi Alejandro, Thanks for review and investigation on this. Actually in the
earliest version of my local patch, I did as your suggestion. But it had issue
and I found it in test cases.
{quote}
Under what circumstances you would have an InputStream that implements
ByteBufferReadable but does not support the read(ByteBuffer) operation?
{quote}
In Hadoop, there are many layers of InputStream. Even some {{InputStream}}
implements {{ByteBufferReadable}}, but whether it support {{read(ByteBuffer)}}
is decided by its wrapped underlying streams.
I use {{FSDataInputStream}} as example, absolutely it implements
{{ByteBufferReadable}}, but it's a high layer wrapper, that doesn't mean it
supports {{read(ByteBuffer)}}, let’s look at its implementation:
{code}
@Override
public int read(ByteBuffer buf) throws IOException {
if (in instanceof ByteBufferReadable) {
return ((ByteBufferReadable)in).read(buf);
}
throw new UnsupportedOperationException("Byte-buffer read unsupported by
input stream");
}
{code}
We can see it depends on the implementation of its wrapped input stream.
In our testcases and also test cases in HDFS-6405, we cover different
environments(HDFS, local FS) and different streams type. We can find this
scenario in {{TestCryptoStreamsForLocalFS}}.
> 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)