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)