private void init() {
		try {
			boolean createdWatchesAndUpdated = false;
			if (zkClient.exists(ZkStateReader.LIVE_NODES_ZKNODE, true)) {
				zkStateReader.getRemoteLiveNodes();
				createdWatchesAndUpdated = true;

			}

			zkCmdExecutor.ensureExists(ZkStateReader.LIVE_NODES_ZKNODE, zkClient);
			createEphemeralLiveNode();

			if (!createdWatchesAndUpdated) {
				zkStateReader.getRemoteLiveNodes();
			}

		} catch (KeeperException e) {
			log.error("", e);
			throw new ZooKeeperException(CeException.ErrorCode.SERVER_ERROR, "", e);
		} catch (InterruptedException e) {
			Thread.currentThread().interrupt();
			log.error("", e);
			throw new ZooKeeperException(CeException.ErrorCode.SERVER_ERROR, "", e);
		}

	}