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