[ https://issues.apache.org/jira/browse/HBASE-17937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15973339#comment-15973339 ]
Abhishek Singh Chouhan commented on HBASE-17937: ------------------------------------------------ In the patch for branch-1, have added the this.addAndGetGlobalMemstoreSize(addedSize) call just after step 7 (wal sync) and removed the update from finally block. After step 7 we are not going to rollback the memstore (we set doRollbackMemstore=false), hence we can update the memstore size there, before step 7 we don't want to update the memstore size anyways since we'll do a rollback of the memstore in the finally block. [~Apache9] [~tedyu] [~apurtell] [~lhofhansl] > 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.branch-1.001.patch, > HBASE-17937.master.001.patch, HBASE-17937.master.002.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)