Sounds like I also have 0.20.3RC merging as well.  Version mistake on my
behalf.  We have a 0.20.3-dev that must've missed the 'syncfs' changes.  I
was merging based solely on the 0.21 trunk.  I'll look into the 0.20.3 code
some more.

I have done the HDFS-200 merge & the trunk group commit, now I need to
reconcile that with the 0.20.3RC code since we don't currently plan on
merging HDFS-265.

Thanks!
Nicolas Spiegelberg

On 1/26/10 2:02 PM, "Stack" <st...@duboce.net> wrote:

> HBase 0.20 had a hack that would recognize the presence of Dhruba's
> HDFS-200.  If it had been applied, then we'd do the open-for-append,
> close, and reopen to recover edits written to an unclosed WAL/HLog
> file (Grep 'syncfs' in HLog on the 0.20 branch).
> 
> In HBase TRUNK, the above hackery was stripped out.  In TRUNK we are
> leaning on the new hflush/HDFS-265 rather than HDFS-200.  For hflush,
> when we do FSDataInputStream::available(), its returning the 'right'
> answer (WALReaderFsDataInputStream::getPos() was added before an API
> was available.  HBASE-2069 is about using the new API instead of this
> getPos fancy-dancing).
> 
> It sounds like you need to do a bit of merging of TRUNK group commit
> and the old hbase code that exploited HDFS-200?
> 
> St.Ack
> 
> On Tue, Jan 26, 2010 at 12:35 PM, Nicolas Spiegelberg
> <nspiegelb...@facebook.com> wrote:
>> Hi,
>> 
>> I am trying to backport the HLog group commit functionality to Hbase 0.20.
>>  For proper reliability, I am working with Dhruba to get the 0.21 syncFs()
>> changes from HDFS ported back to HDFS 0.20 as well.  When going through a
>> peer review of the modified code, my group had a question about the
>> SequenceFileLogReader.java (WALReader).  I am hoping that you guys could be
>> of assistance.
>> 
>> I know that there is an open issue [HBASE-2069] where Hlog::splitLog() does
>> not call DFSDataInputStream::getVisibleLength(), which would properly sync
>> hflushed, but unclosed, file lengths.  I believe the current workaround is to
>> open an HDFS file in append mode & then close, which would cause the namenode
>> to get updates from the datanodes.  However, I don¹t see that shim present in
>> Hlog::splitLog() on the 0.21 trunk.  Is this a pending issue to fix or is
>> calling FSDataInputStream::available() within
>> WALReaderFsDataInputStream::getPos() sufficient to force the namenode to sync
>> up with the datanodes?
>> 
>> Nicolas Spiegelberg
>> 

Reply via email to