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

Duo Zhang commented on HBASE-17937:
-----------------------------------

I think on master we can just move addAndGetMemstoreSize call to right after 
'STEP 5. Write back to memstore'? As now we will modify memstore at last and 
there is no rollback, we do not need to put the call in the finally block 
anymore. If we hit an exception before modifying memstore then just let it go, 
there is nothing new in memstore so we do not need to call 
addAndGetMemstoreSize.

Thanks.

> Memstore size becomes negative in case of expensive postPut/Delete 
> Coprocessor call
> -----------------------------------------------------------------------------------
>
>                 Key: HBASE-17937
>                 URL: https://issues.apache.org/jira/browse/HBASE-17937
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.0.0, 1.3.1, 0.98.24
>            Reporter: Abhishek Singh Chouhan
>            Assignee: Abhishek Singh Chouhan
>         Attachments: HBASE-17937.master.001.patch
>
>
> We ran into a situation where the memstore size became negative due to 
> expensive postPut/Delete Coprocessor calls in doMiniBatchMutate. We update 
> the memstore size in the finally block of doMiniBatchMutate, however a queued 
> flush can be triggered during the coprocessor calls(if they are taking time 
> eg. index updates) since we have released the locks and advanced mvcc at this 
> point. The flush will turn the memstore size negative since the value 
> subtracted is the actual value flushed from stores. The negative value 
> impacts the future flushes amongst others that depend on memstore size.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to