[
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