[ 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