HDFS-15623. Respect configured values of rpc.engine (#2403) Contributed by Hector Chaverri.

(cherry picked from commit 6eacaffeea)
This commit is contained in:
hchaverr 2020-10-22 10:32:28 -07:00 committed by Konstantin V Shvachko
parent c7b1bdba63
commit 3443d75946
2 changed files with 18 additions and 2 deletions

View File

@ -193,14 +193,18 @@ public class RPC {
private static final String ENGINE_PROP = "rpc.engine";
/**
* Set a protocol to use a non-default RpcEngine.
* Set a protocol to use a non-default RpcEngine if one
* is not specified in the configuration.
* @param conf configuration to use
* @param protocol the protocol interface
* @param engine the RpcEngine impl
*/
public static void setProtocolEngine(Configuration conf,
Class<?> protocol, Class<?> engine) {
conf.setClass(ENGINE_PROP+"."+protocol.getName(), engine, RpcEngine.class);
if (conf.get(ENGINE_PROP+"."+protocol.getName()) == null) {
conf.setClass(ENGINE_PROP+"."+protocol.getName(), engine,
RpcEngine.class);
}
}
// return the RpcEngine configured to handle a protocol

View File

@ -1501,6 +1501,18 @@ public class TestRPC extends TestRpcBase {
}
}
@Test
public void testSetProtocolEngine() {
Configuration conf = new Configuration();
RPC.setProtocolEngine(conf, StoppedProtocol.class, StoppedRpcEngine.class);
RpcEngine rpcEngine = RPC.getProtocolEngine(StoppedProtocol.class, conf);
assertTrue(rpcEngine instanceof StoppedRpcEngine);
RPC.setProtocolEngine(conf, StoppedProtocol.class, ProtobufRpcEngine.class);
rpcEngine = RPC.getProtocolEngine(StoppedProtocol.class, conf);
assertTrue(rpcEngine instanceof StoppedRpcEngine);
}
public static void main(String[] args) throws Exception {
new TestRPC().testCallsInternal(conf);
}