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

Devaraj Das commented on HBASE-6787:
------------------------------------

bq. This ability to add arbitrary bytes? If so, does it have to part of the 
general RowProcessor? Can it not be specific to aggregating CP? Just wondering.

Maybe, I shouldn't have mixed up the small fixes with this patch. Yes, this 
code belongs purely to Aggregating CP and while doing this patch I noticed an 
obvious optimization that I could do (create one ByteString object instead of 
two)... Should I raise a separate jira for the two unrelated changes (this one 
and there is another to do with Javadoc in ColumnInterpreter.java), or is it 
okay to leave them as part of this patch.

bq. I ain't sure whats going on in RowProcessorClient. It has a method 
getRowProcessorPB that takes and returns generics of RowProcessorArgument? I 
don't follow what is going on.

This method just converts the passed RowProcessor<T> to a PB so that it can be 
serialized when the RowProcessorEndpoint CP Service is invoked and that's all. 
The first <T> that is there in the method signature to take care of Java 
generics syntax since the argument needs to have the generics type <T> (without 
the first <T> the thing won't compile...).

bq. In BaseRowProcessorEndpoint#process, we take a RowProcessorArgument. Should 
that be a RowProcessorRequest? (Ditto here 
constructRowProcessorFromRequest(RowProcessorArgument request))

Yeah it could be.. will rename. 

bq. What is getProtoForResultType that takes a Result? Why ResultType in the 
method name?

This is used at the server side. This converts the received result instance (of 
type T) to PB (so that the CP framework can serialize it over the wire to the 
client). I guess I should remove the 'Type' string from the method name.

bq. The initialize taking 'bytes' drops typing, ability to extend (unless these 
arbitrary bytes are serialized pb themselves)

Yes, as I said in my previous jira comment, the CP endpoint framework is 
agnostic to the actual application types.

bq. When would there be different result types? (looking at 
getProtoForResultType in the Interface) And it returns serialized pb?

For different implementations of RowProcessor interface, the types could be 
different. [I'll remove the 'Type' from the method name - that's confusing 
things it seems.]

bq. So result of the CP is arbitrary bytes for the client to interpret? Can it 
not be a pb?

Ditto as my previous jira comment. 

bq. Sorry if my comments above are clueless for I am when it comes to these 
endpoint CPs.

That's okay, [~stack]. Those were good questions.
                
> Convert RowProcessorProtocol to protocol buffer service
> -------------------------------------------------------
>
>                 Key: HBASE-6787
>                 URL: https://issues.apache.org/jira/browse/HBASE-6787
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Coprocessors
>            Reporter: Gary Helmling
>            Assignee: Devaraj Das
>             Fix For: 0.96.0
>
>         Attachments: 6787-1.patch
>
>
> With coprocessor endpoints now exposed as protobuf defined services, we 
> should convert over all of our built-in endpoints to PB services.

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

Reply via email to