HDFS-16411 RBF: RouterId is NULL when disable RourterRpcServer (#3878)
This commit is contained in:
parent
b39b334873
commit
3e7a7c3c4a
|
@ -196,6 +196,8 @@ public class Router extends CompositeService implements
|
||||||
this.setRpcServerAddress(rpcServer.getRpcAddress());
|
this.setRpcServerAddress(rpcServer.getRpcAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkRouterId();
|
||||||
|
|
||||||
if (conf.getBoolean(
|
if (conf.getBoolean(
|
||||||
RBFConfigKeys.DFS_ROUTER_ADMIN_ENABLE,
|
RBFConfigKeys.DFS_ROUTER_ADMIN_ENABLE,
|
||||||
RBFConfigKeys.DFS_ROUTER_ADMIN_ENABLE_DEFAULT)) {
|
RBFConfigKeys.DFS_ROUTER_ADMIN_ENABLE_DEFAULT)) {
|
||||||
|
@ -308,6 +310,21 @@ public class Router extends CompositeService implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the router id if not set to prevent RouterHeartbeatService
|
||||||
|
* update state store with a null router id.
|
||||||
|
*/
|
||||||
|
private void checkRouterId() {
|
||||||
|
if (this.routerId == null) {
|
||||||
|
InetSocketAddress confRpcAddress = conf.getSocketAddr(
|
||||||
|
RBFConfigKeys.DFS_ROUTER_RPC_BIND_HOST_KEY,
|
||||||
|
RBFConfigKeys.DFS_ROUTER_RPC_ADDRESS_KEY,
|
||||||
|
RBFConfigKeys.DFS_ROUTER_RPC_ADDRESS_DEFAULT,
|
||||||
|
RBFConfigKeys.DFS_ROUTER_RPC_PORT_DEFAULT);
|
||||||
|
setRpcServerAddress(confRpcAddress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String getDisabledDependentServices() {
|
private String getDisabledDependentServices() {
|
||||||
if (this.stateStore == null && this.adminServer == null) {
|
if (this.stateStore == null && this.adminServer == null) {
|
||||||
return StateStoreService.class.getSimpleName() + ","
|
return StateStoreService.class.getSimpleName() + ","
|
||||||
|
|
|
@ -223,10 +223,14 @@ public class TestRouter {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSwitchRouter() throws IOException {
|
public void testSwitchRouter() throws IOException {
|
||||||
assertRouterHeartbeater(true, true);
|
assertRouterHeartbeater(true, true, true);
|
||||||
assertRouterHeartbeater(true, false);
|
assertRouterHeartbeater(true, true, false);
|
||||||
assertRouterHeartbeater(false, true);
|
assertRouterHeartbeater(true, false, true);
|
||||||
assertRouterHeartbeater(false, false);
|
assertRouterHeartbeater(true, false, false);
|
||||||
|
assertRouterHeartbeater(false, true, true);
|
||||||
|
assertRouterHeartbeater(false, true, false);
|
||||||
|
assertRouterHeartbeater(false, false, true);
|
||||||
|
assertRouterHeartbeater(false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -235,15 +239,19 @@ public class TestRouter {
|
||||||
* @param expectedRouterHeartbeat expect the routerHeartbeat enable state.
|
* @param expectedRouterHeartbeat expect the routerHeartbeat enable state.
|
||||||
* @param expectedNNHeartbeat expect the nnHeartbeat enable state.
|
* @param expectedNNHeartbeat expect the nnHeartbeat enable state.
|
||||||
*/
|
*/
|
||||||
private void assertRouterHeartbeater(boolean expectedRouterHeartbeat,
|
private void assertRouterHeartbeater(boolean enableRpcServer, boolean expectedRouterHeartbeat,
|
||||||
boolean expectedNNHeartbeat) throws IOException {
|
boolean expectedNNHeartbeat) throws IOException {
|
||||||
final Router router = new Router();
|
final Router router = new Router();
|
||||||
Configuration baseCfg = new RouterConfigBuilder(conf).rpc().build();
|
Configuration baseCfg = new RouterConfigBuilder(conf).rpc(enableRpcServer).build();
|
||||||
baseCfg.setBoolean(RBFConfigKeys.DFS_ROUTER_HEARTBEAT_ENABLE,
|
baseCfg.setBoolean(RBFConfigKeys.DFS_ROUTER_HEARTBEAT_ENABLE,
|
||||||
expectedRouterHeartbeat);
|
expectedRouterHeartbeat);
|
||||||
baseCfg.setBoolean(RBFConfigKeys.DFS_ROUTER_NAMENODE_HEARTBEAT_ENABLE,
|
baseCfg.setBoolean(RBFConfigKeys.DFS_ROUTER_NAMENODE_HEARTBEAT_ENABLE,
|
||||||
expectedNNHeartbeat);
|
expectedNNHeartbeat);
|
||||||
router.init(baseCfg);
|
router.init(baseCfg);
|
||||||
|
|
||||||
|
// RouterId can not be null , used by RouterHeartbeatService.updateStateStore()
|
||||||
|
assertNotNull(router.getRouterId());
|
||||||
|
|
||||||
RouterHeartbeatService routerHeartbeatService =
|
RouterHeartbeatService routerHeartbeatService =
|
||||||
router.getRouterHeartbeatService();
|
router.getRouterHeartbeatService();
|
||||||
if (expectedRouterHeartbeat) {
|
if (expectedRouterHeartbeat) {
|
||||||
|
|
Loading…
Reference in New Issue