public static LlapClusterStateForCompile getClusterInfo(final Configuration conf) {
    final String nodes = HiveConf.getTrimmedVar(conf, HiveConf.ConfVars.LLAP_DAEMON_SERVICE_HOSTS);
    final String userName = HiveConf.getVar(
            conf, ConfVars.LLAP_ZK_REGISTRY_USER, LlapRegistryService.currentUser());
    Callable<LlapClusterStateForCompile> generator = new Callable<LlapClusterStateForCompile>() {
      @Override
      public LlapClusterStateForCompile call() throws Exception {
        LOG.info("Creating cluster info for " + userName + ":" + nodes);
        return new LlapClusterStateForCompile(conf, CLUSTER_UPDATE_INTERVAL_MS);
      }
    };
    try {
      return CACHE.get(userName + ":" + nodes, generator);
    } catch (ExecutionException e) {
      throw new RuntimeException(e); // Should never happen... ctor is just assignments.
    }
  }
Synchronizes the actual update from the cluster; only one thread at a time.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/LlapClusterStateForCompile.java