@Override
public void start() throws Exception {
logAppenderInitializer.initialize();
resetShutdownTime();
createDirectory("twill");
createSystemHBaseNamespace();
updateConfigurationTable();
Services.startAndWait(zkClient, cConf.getLong(Constants.Zookeeper.CLIENT_STARTUP_TIMEOUT_MILLIS),
TimeUnit.MILLISECONDS,
String.format("Connection timed out while trying to start ZooKeeper client. Please " +
"verify that the ZooKeeper quorum settings are correct in cdap-site.xml. " +
"Currently configured as: %s", cConf.get(Constants.Zookeeper.QUORUM)));
Futures.getUnchecked(ZKOperations.ignoreError(zkClient.create("/", null, CreateMode.PERSISTENT),
KeeperException.NodeExistsException.class, null));
electionInfoService.startAndWait();
leaderElection.startAndWait();
}