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

Jimmy Xiang commented on HBASE-10714:
-------------------------------------

No need. RingBufferEventHandler#attainSafePoint seems to do the check.  For the 
first patch, we need the additional checking because highestSyncedSequence is 0 
too initially. We can't just set SyncFuture.NOT_DONE to -1. We need to change 
highestSyncedSequence's initial value too.  Instead, the second patch just 
makes sure the sequence starts from 1, the same purpose, just a little simpler.

> SyncFuture hangs when sequence is 0
> -----------------------------------
>
>                 Key: HBASE-10714
>                 URL: https://issues.apache.org/jira/browse/HBASE-10714
>             Project: HBase
>          Issue Type: Bug
>          Components: wal
>            Reporter: Jimmy Xiang
>            Assignee: Jimmy Xiang
>             Fix For: 0.99.0
>
>         Attachments: hbase-10714.patch, hbase-10714_v2.patch
>
>
> In SyncFuture, NOT_DONE = 0. The initial value of the ringBuffer is -1. So 
> ringBuffer.next() gives 0 for the first call. If we create a SyncFuture with 
> sequence = 0, even when we set it's done (ie. doneSequence = 0), it is still 
> not done since doneSequence == NOT_DONE == 0.  Can we set NOT_DONE to -1, and 
> the initial doneSequence to -2?



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

Reply via email to