Hi guys, I am trying to do some changes in the YARN code. Through other things, I am trying to instantiate a Server and a Client which communicate via RPC.
To do that, I did the following: 1. I created a proto file where I describe the messages and the service 2. I create a server class with implements the .Interface from the generated service class (I don't know a blocking interface)This class also defines a Server server class, which I instantiate as following:server = new RPC.Builder(conf).setProtocol(MyProtocolPB.class).setInstance(this).setBindAddress(...).setPort(...).build()server.start() 3. I create a client which tries to connect to server as following: RPC.setProtocolEngine(conf, MyProtocolPB.class, ProtobufRpcEngine.class)InetSocketAddress addr = new InetSocketAddress(IP_SERVER, PORT_SERVER) proxy = RPC.getProxy(MyProtocolPB.class, 1L, addr, conf) Then I call the remote methods at the server with proxy.method(.....) However, when I start running the code, it throws the following exception:Service f2_service failed in state STARTED; cause: java.lang.RuntimeException: java.lang.NoSuchFieldException: versionID java.lang.RuntimeException: java.lang.NoSuchFieldException: versionID On the other hand, I also see this:Interface interface org.apache.hadoop.yarn.proto.F2DSProtocol$F2DSProtocolService$Interface ignored because it does not extend VersionedProtocol where F2DSProtocol is the generated source file based on my proto. Do you guys have any idea where I am wrong with my creation of the client/server or can you point me to some examples in the yarn code which does that? I was looking at various files, but I am still confused what is wrong with my approach. Thanks in advance,Robert
