You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (JIRA)" <ji...@apache.org> on 2017/02/20 13:03:44 UTC
[jira] [Commented] (HBASE-17662) Disable in-memory flush when
replaying from WAL
[ https://issues.apache.org/jira/browse/HBASE-17662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15874496#comment-15874496 ]
Anoop Sam John commented on HBASE-17662:
----------------------------------------
bq. if (inWalReplay.get())
This check and the set and reset of the inWalReplay state will be done from one thread only right? I may be wrong.. If so, do we really need a Atomic boolean or just simple boolean is ok? The above if comes in all normal write path and now we add a AtomicBoolean read which is not that cheap. If the state is being accessed from multiple thread and an Atomic/volatile is unavoidable, I suggest we add this boolean check after the size check. I mean after if (this.active.keySize() > inmemoryFlushSize)
Or else for every write op we will end up in this Atomic boolean read.
> Disable in-memory flush when replaying from WAL
> -----------------------------------------------
>
> Key: HBASE-17662
> URL: https://issues.apache.org/jira/browse/HBASE-17662
> Project: HBase
> Issue Type: Sub-task
> Reporter: Anastasia Braginsky
> Attachments: HBASE-17662-V02.patch
>
>
> When replaying the edits from WAL, the region's updateLock is not taken, because a single threaded action is assumed. However, the thread-safeness of the in-memory flush of CompactingMemStore is based on taking the region's updateLock.
> The in-memory flush can be skipped in the replay time (anyway everything is flushed to disk just after the replay). Therefore it is acceptable to just skip the in-memory flush action while the updates come as part of replay from WAL.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)