[ https://issues.apache.org/jira/browse/HBASE-7093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13498229#comment-13498229 ]
Ted Yu commented on HBASE-7093: ------------------------------- {code} for (Mutation m : mutations) { ... + advancedMemstoreWrite = region.prepareAppend((Append)m, now, !advancedMemstoreWrite); {code} Since prepareAppend() is called in a loop, if there're multiple Append's in mutations, the value of waitForPreviousMemstoreWrite would toggle between calls to prepareAppend(), right ? That doesn't seem to be what you wanted. > Couple Increments/Appends with Put/Delete(s) > -------------------------------------------- > > Key: HBASE-7093 > URL: https://issues.apache.org/jira/browse/HBASE-7093 > Project: HBase > Issue Type: Improvement > Affects Versions: 0.96.0 > Reporter: Varun Sharma > Assignee: Varun Sharma > Attachments: 7093-v1.txt > > > See related issue - https://issues.apache.org/jira/browse/HBASE-4583 > Currently, we cannot bundle increment/append with put/delete operations. The > above JIRA MVCC'izes the increment/append operations. > One issue is that increment(s)/append(s) are not idempotent and hence > repeating the transaction has an associated issue of leading to incorrect > value/append results. This could be solved by passing additional tokens as > part of the append(s). > One possible high level approach could be: > 1) Class IncrementMutation which inherits from Increment and Mutation > 2) In the mutateRow call, we add a case for "IncrementMutation" object > 3) Factor out the code wrapped inside the "lock and MVCC" from increment() > function to internalIncrement. > 4) Call internalIncrement from mutateRow and increment() -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira