Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 23EADDBB0 for ; Thu, 15 Nov 2012 05:40:14 +0000 (UTC) Received: (qmail 85002 invoked by uid 500); 15 Nov 2012 05:40:13 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 84969 invoked by uid 500); 15 Nov 2012 05:40:13 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 84937 invoked by uid 99); 15 Nov 2012 05:40:12 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Nov 2012 05:40:12 +0000 Date: Thu, 15 Nov 2012 05:40:12 +0000 (UTC) From: "Ted Yu (JIRA)" To: issues@hbase.apache.org Message-ID: <1219968050.117796.1352958012618.JavaMail.jiratomcat@arcas> In-Reply-To: <764868728.63748.1351902251865.JavaMail.jiratomcat@arcas> Subject: [jira] [Commented] (HBASE-7093) Couple Increments/Appends with Put/Delete(s) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-7093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13497778#comment-13497778 ] Ted Yu commented on HBASE-7093: ------------------------------- In javadoc, describe what the method does: {code} + boolean prepareAppend(Append append, long now, boolean advanceMemstoreRead) throws IOException { {code} Also, add @return javadoc. {code} + boolean advancedMemstoreRead = false; + if (advanceMemstoreRead) { {code} Why introducing a local variable which is spelled almost exactly the same as method parameter ? Looking at the method's return value, it would be the same as that of the input parameter, advanceMemstoreRead. Looks like you don't need advancedMemstoreRead. {code} + advancedMemstoreWrite = region.prepareAppend((Append)m, now, !advancedMemstoreWrite); {code} Can you explain the role for advancedMemstoreWrite above (especially the assignment) ? > 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