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

ramkrishna.s.vasudevan commented on HBASE-16890:
------------------------------------------------

In my previous patch other than that hack, I felt there is another problem. 
Since we synchronize on waitingConsumePayloads in the onEvent() method. Though 
the onEvent() occurs for every sequence because of synchronize that is there we 
will be having a situation where
Seq number 100, 101, 102, 103 wait to enter synchronize and it so happens that 
103, 102 and 101 is the sequence. Now which means the append that we do will 
have a reverse sequence which is not right. So there could be a chance that the 
highestSyncId could get a value lesser than the previous one and that is not 
correct.  Previously there is no such problem as the nextTxid is what was 
getting used and that was an increasing long value.
I have a way to solve the problem. On append() call generate a sequence but do 
not create the fSWALEntry with that sequence. Instead just pass on the required 
things to form the FSWALEntry and when the onEvent() occurs create a FSWALEntry 
by incrementing the 'nextTxid' inside the synchronize block of 
'waitingConsumePayloads '.
For the SyncFuture thing the ugly thing is the SyncFuture that is created with 
the ring buffer sequence, we will update the txid in the SyncFuture by 
subtracting 1 from nextTxid and rest works as before. 
This model works better than the current AsyncWAL model. Any feedback?

> Analyze the performance of AsyncWAL and fix the same
> ----------------------------------------------------
>
>                 Key: HBASE-16890
>                 URL: https://issues.apache.org/jira/browse/HBASE-16890
>             Project: HBase
>          Issue Type: Sub-task
>          Components: wal
>    Affects Versions: 2.0.0
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>             Fix For: 2.0.0
>
>         Attachments: AsyncWAL_disruptor.patch, Screen Shot 2016-10-25 at 
> 7.34.47 PM.png, Screen Shot 2016-10-25 at 7.39.07 PM.png, Screen Shot 
> 2016-10-25 at 7.39.48 PM.png, async.svg, classic.svg, contention.png, 
> contention_defaultWAL.png
>
>
> Tests reveal that AsyncWAL under load in single node cluster performs slower 
> than the Default WAL. This task is to analyze and see if we could fix it.
> See some discussions in the tail of JIRA HBASE-15536.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to