[ 
https://issues.apache.org/jira/browse/HBASE-5515?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13223013#comment-13223013
 ] 

Phabricator commented on HBASE-5515:
------------------------------------

lhofhansl has commented on the revision "HBASE-5515 [jira] Add a processRow API 
that supports atomic multiple reads and writes on a row".

  Fair enough on doing this in another jira.
  Looking at this jira, though, I realize you're almost there.

  The coprocessor endpoint itself can implement RowProcessor and then pass 
itself to HRegion.processRow. That way all class loading is done by the 
coprocessor framework.

  See inline comments below.

INLINE COMMENTS
  src/main/java/org/apache/hadoop/hbase/coprocessor/RowProcessor.java:44 Wanna 
have a RowProcessor interface and make this BaseRowProcessor (which of course 
would implement RowProcessor)?
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java:4372 Nice
  src/main/java/org/apache/hadoop/hbase/coprocessor/ProcessRowEndpoint.java:54 
Since this is for a single row (and hence for a single region) clients should 
just use the coprocessorProxy interface:
  RowProcessorProtocol p = table.coprocessorProxy(RowProcessorProtocol.class, 
myRow);
  p.process(myRowProcessorInstance);

  But see above, this method might not even be necessary.
  src/main/java/org/apache/hadoop/hbase/coprocessor/ProcessRowEndpoint.java:41 
Rather than having a method that requires another object passed (for which the 
class needs to be registered at all regionservers, etc). The endpoint itself 
could have the process method on it.
  A client would then only have to deploy the coprocessor (a different one for 
each type of operation, but that is less effort than a separate class for each 
operation, as coprocessors already implement the right class loading.)
  src/main/java/org/apache/hadoop/hbase/coprocessor/ProcessRowEndpoint.java:44 
I.e. here the coprocessor would pass itself.

REVISION DETAIL
  https://reviews.facebook.net/D2067

                
> Add a processRow API that supports atomic multiple reads and writes on a row
> ----------------------------------------------------------------------------
>
>                 Key: HBASE-5515
>                 URL: https://issues.apache.org/jira/browse/HBASE-5515
>             Project: HBase
>          Issue Type: New Feature
>            Reporter: Scott Chen
>            Assignee: Scott Chen
>         Attachments: HBASE-5515.D2067.1.patch, HBASE-5515.D2067.10.patch, 
> HBASE-5515.D2067.11.patch, HBASE-5515.D2067.12.patch, 
> HBASE-5515.D2067.13.patch, HBASE-5515.D2067.14.patch, 
> HBASE-5515.D2067.2.patch, HBASE-5515.D2067.3.patch, HBASE-5515.D2067.4.patch, 
> HBASE-5515.D2067.5.patch, HBASE-5515.D2067.6.patch, HBASE-5515.D2067.7.patch, 
> HBASE-5515.D2067.8.patch, HBASE-5515.D2067.9.patch
>
>
> We have modified HRegion.java internally to do some atomic row processing. It 
> will be nice to have a plugable API for this.

--
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

        

Reply via email to