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

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

I tried to add a unit test and found the test is flaky. The flakiness is 
because the replaceWriter thread races with the syncRunner thread. 
ReplaceWriter publishes the sync future, then closes the writer, and switches 
it with the new one. SyncRunner gets the sync future, tries to sync the writer, 
and the writer is closed by replaceWriter. If replaceWriter is closing the 
writer, syncRunner should not rush to do the sync, right?

> 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
>
> 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