protected final String registerServiceRecord(ServiceRecord srv, final String uniqueId) throws IOException {
    // restart sensitive instance id
    srv.set(UNIQUE_IDENTIFIER, uniqueId);

    // Create a znode under the rootNamespace parent for this instance of the server
    try {
      // PersistentNode will make sure the ephemeral node created on server will be present
      // even under connection or session interruption (will automatically handle retries)
      znode = new PersistentNode(zooKeeperClient, CreateMode.EPHEMERAL_SEQUENTIAL, false,
          workersPath + "/" + workerNodePrefix, encoder.toBytes(srv));
    
      // start the creation of znodes
      znode.start();

      // We'll wait for 120s for node creation
      long znodeCreationTimeout = 120;
      if (!znode.waitForInitialCreate(znodeCreationTimeout, TimeUnit.SECONDS)) {
        throw new Exception(
            "Max znode creation wait time: " + znodeCreationTimeout + "s exhausted");
      }

      znodePath = znode.getActualPath();

      if (doCheckAcls) {
        try {
          checkAndSetAcls();
        } catch (Exception ex) {
          throw new IOException("Error validating or setting ACLs. " + disableMessage, ex);
        }
      }
      if (zooKeeperClient.checkExists().forPath(znodePath) == null) {
        // No node exists, throw exception
        throw new Exception("Unable to create znode for this instance on ZooKeeper.");
      }
    } catch (Exception e) {
      LOG.error("Unable to create a znode for this server instance", e);
      CloseableUtils.closeQuietly(znode);
      throw (e instanceof IOException) ? (IOException)e : new IOException(e);
    }
    return uniqueId;
  }
Get the ensemble server addresses from the configuration. The format is: host1:port,
host2:port..

@param conf configuration
llap-client/src/java/org/apache/hadoop/hive/registry/impl/ZkRegistryBase.java