[
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