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 D8C5C7F7F for ; Sat, 17 Dec 2011 03:31:07 +0000 (UTC) Received: (qmail 73552 invoked by uid 500); 17 Dec 2011 03:31:07 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 73433 invoked by uid 500); 17 Dec 2011 03:31:06 -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 73421 invoked by uid 99); 17 Dec 2011 03:31:02 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 17 Dec 2011 03:31:02 +0000 X-ASF-Spam-Status: No, hits=-2001.5 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 17 Dec 2011 03:30:52 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 151F3117A11 for ; Sat, 17 Dec 2011 03:30:31 +0000 (UTC) Date: Sat, 17 Dec 2011 03:30:31 +0000 (UTC) From: "Mubarak Seyed (Commented) (JIRA)" To: issues@hbase.apache.org Message-ID: <1830931400.21938.1324092631087.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1062227642.47040.1320175292321.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (HBASE-4720) Implement atomic update operations (checkAndPut, checkAndDelete) for REST client/server MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HBASE-4720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13171436#comment-13171436 ] Mubarak Seyed commented on HBASE-4720: -------------------------------------- Thanks Ted. This is what i think about refactoring the TableResource and CheckAndXXXXResource. I can't extend from TableResource as WebContainer ends up look for @Path in TableResource after calling super(table) in CheckAndXXXXResource, which causes web container to throw incorrect URI exception. Even if i make some of the methods (scanTransformAttrs) to static, it breaks on variables scope. I think we need a superClass for both TableResource and CheckAndXXXXResource, which can carry most of the methods (scanTransformAttrs, getTransform, setTransform, tranform), it would look like {code} public class BasicResource extends ResourceBase{ -- All the common methods -- } public class TableResource extends BasicResource{ } public class CheckAndXXXXResource extends BasicResource{ } {code} OR we can move all the common methods to ResourceBase and we can have overloaded constructor to send table name, like {code} public ResourceBase(String table){ } public ResourceBase(){ } {code} so that all other resource classes (such as VersionResource, SchemaResource, etc) does not need to change. I am just hacking the code with option #2 (moving methods to ResourceBase), will test it out, post them on review board then wait for comments. Thanks, Mubarak > Implement atomic update operations (checkAndPut, checkAndDelete) for REST client/server > ---------------------------------------------------------------------------------------- > > Key: HBASE-4720 > URL: https://issues.apache.org/jira/browse/HBASE-4720 > Project: HBase > Issue Type: Improvement > Reporter: Daniel Lord > Attachments: HBASE-4720.v1.patch > > > I have several large application/HBase clusters where an application node will occasionally need to talk to HBase from a different cluster. In order to help ensure some of my consistency guarantees I have a sentinel table that is updated atomically as users interact with the system. This works quite well for the "regular" hbase client but the REST client does not implement the checkAndPut and checkAndDelete operations. This exposes the application to some race conditions that have to be worked around. It would be ideal if the same checkAndPut/checkAndDelete operations could be supported by the REST client. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira