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

Suresh Srinivas commented on HDFS-2660:
---------------------------------------

bq. That sounds like a change that violates the design of the RPCEngine API, 
which was meant to provide a serialization and transport-independent 
abstraction for RPC that the rest of Hadoop builds on.
I am not sure what design is violated. Can you point me to javadoc related to 
this. Also these APIs are not marked stable. They are evolving.


bq. > Does RPC engine pluggability mean, just change the RPC engine to some 
other engine and every thing continues work fine?
bq. That was the intent. If that's no longer desired, then RPCEngine should be 
removed and protobuf should be used directly. HDFS-2647 and now HDFS-2669 seem 
to be assuming that all RPC in HDFS will use protobuf and only protobuf, since 
they're directly specifying protobuf-specifics in e.g., NameNodeRpcServer.java. 
That class used to be generic, indepdendent of any particular RPC serialization 
or transport.

To RPC we now pass three things: <RpcKind, Interface, Implementation>. The 
protobuf to which HDFS has switched to provides Implementation that does not 
share same java interface as the Interface. One could get Avro working by just 
passing suitable implementation for which reflection is useful.

bq. Is there no way to constrain protobuf-specifics to ProtobufRpcEngine, as 
has been done for other RPC engines? If not, why can't we at least condition 
protobuf-specifics to cases where protobuf is actually being used, as in the 
patch that I provided. In other words, why is that patch insufficient?
If you look at the results for your patch, you will see lot more tests failed. 
As I said earlier, the right implementation needs to be passed.

bq. What do you mean by WireProtocol here? The protobuf-generated Java 
interface? That contains, e.g., fields that are not meant to be transmitted but 
are not declared transient. In other words, it's not a very good specification 
of a wire protocol.
I meant ClientNodeWireProtocol, etc.


                
> Turn off TestDFSOverAvroRpc
> ---------------------------
>
>                 Key: HDFS-2660
>                 URL: https://issues.apache.org/jira/browse/HDFS-2660
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: test
>            Reporter: Suresh Srinivas
>            Assignee: Suresh Srinivas
>             Fix For: 0.24.0
>
>         Attachments: HDFS-2660.patch, HDFS-2660.txt
>
>
> With HDFS-2647, protobuf based RPCs are enabled for some of the protocol. 
> With this, Avro RPC based protocol is not working. Avro based RPC needs to be 
> turned on similar to how protobuf based RPCs are done. Until such a time, I 
> propose turning off the test.

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