[ 
https://issues.apache.org/jira/browse/HBASE-11660?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14093651#comment-14093651
 ] 

Enis Soztutar commented on HBASE-11660:
---------------------------------------

Agreed with Eric and Jeff that we should do a sweep for removing dependency on 
available() since it does not match the documented java semantics. Great find 
Eric! 
I'll try to take a shot if I find time. 

> Make WAL reader follow contract for java.io.InputStream.available()
> -------------------------------------------------------------------
>
>                 Key: HBASE-11660
>                 URL: https://issues.apache.org/jira/browse/HBASE-11660
>             Project: HBase
>          Issue Type: Bug
>          Components: wal
>    Affects Versions: 0.99.0, 2.0.0, 0.98.6
>            Reporter: Eric Hanson
>            Priority: Minor
>         Attachments: hbase-11660.01.patch
>
>
> In the process of building support to running HBase on Microsoft Azure 
> HDInsight, I hit an issue in the HBase WAL reading process that took a lot of 
> time to debug. The WAL reading code depends on available() for the log 
> InputStream never returing 0 until end of file. This is not the same as the 
> contract in java.io.InputStream for available. 
> To prevent future grief for others that may want to port HBase onto storage 
> systems other than HDFS, I propose to change the HBase WAL reader so it does 
> not assume that EOF has been reached when available() == 0. It instead would 
> treat available only as described in InputStream, i.e. available() is merely 
> the number of bytes that could be read from the stream without blocking. That 
> could be 0 even before EOF.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to