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