tanishq-chugh commented on code in PR #6656:
URL: https://github.com/apache/hive/pull/6656#discussion_r4356831470


##########
llap-server/src/java/org/apache/hadoop/hive/llap/cli/status/LlapStatusServiceDriver.java:
##########
@@ -488,6 +532,99 @@ private ExitCode 
populateAppStatusFromLlapRegistry(AppStatusBuilder appStatusBui
     return ExitCode.SUCCESS;
   }
 
+  static boolean isLlapDaemonWebResponsive(String statusUrl) {
+    if (StringUtils.isBlank(statusUrl)) {
+      return false;
+    }
+    HttpURLConnection conn = null;
+    try {
+      conn = (HttpURLConnection) new URL(statusUrl).openConnection();
+      conn.setRequestMethod("GET");
+      conn.setConnectTimeout(FIXED_REGISTRY_STATUS_CHECK_TIMEOUT_MS);
+      conn.setReadTimeout(FIXED_REGISTRY_STATUS_CHECK_TIMEOUT_MS);
+      int responseCode = conn.getResponseCode();
+      return responseCode >= HttpURLConnection.HTTP_OK
+          && responseCode < HttpURLConnection.HTTP_MULT_CHOICE;
+    } catch (IOException e) {
+      LOG.debug("LLAP daemon status check failed for {}: {}", statusUrl, 
e.toString());
+      return false;
+    } finally {
+      if (conn != null) {
+        conn.disconnect();
+      }
+    }
+  }
+
+  static LlapInstance createLlapInstanceFromRegistry(LlapServiceInstance 
serviceInstance) {
+    String containerId = serviceInstance.getProperties().get(
+        HiveConf.ConfVars.LLAP_DAEMON_CONTAINER_ID.varname);
+    if (StringUtils.isBlank(containerId)) {
+      containerId = serviceInstance.getWorkerIdentity();
+    }
+    LlapInstance llapInstance = new LlapInstance(serviceInstance.getHost(), 
containerId);
+    llapInstance.setMgmtPort(serviceInstance.getManagementPort());
+    llapInstance.setRpcPort(serviceInstance.getRpcPort());
+    llapInstance.setShufflePort(serviceInstance.getShufflePort());
+    llapInstance.setWebUrl(serviceInstance.getServicesAddress());
+    llapInstance.setStatusUrl(serviceInstance.getServicesAddress() + 
"/status");
+    return llapInstance;
+  }
+
+  static void updateStateFromInstanceCounts(AppStatusBuilder appStatusBuilder, 
int liveInstances) {
+    Integer desiredInstances = appStatusBuilder.getDesiredInstances();
+    if (desiredInstances != null && liveInstances >= desiredInstances) {
+      appStatusBuilder.setState(State.RUNNING_ALL);
+    } else if (liveInstances > 0) {
+      appStatusBuilder.setState(State.RUNNING_PARTIAL);
+    } else {
+      appStatusBuilder.setState(State.LAUNCHING);
+    }
+  }
+
+  /**
+   * Configures {@link #llapRegistryConf} for {@link LlapRegistryService}. 
Preserves a comma-separated
+   * host list for {@code LlapFixedRegistryImpl}; uses {@code @appName} for ZK 
registry otherwise.
+   */
+  static void configureLlapRegistryHosts(Configuration conf, Configuration 
llapRegistryConf, String appName) {
+    String configuredHosts = HiveConf.getTrimmedVar(conf, 
HiveConf.ConfVars.LLAP_DAEMON_SERVICE_HOSTS);
+    if (configuredHosts != null && !configuredHosts.startsWith("@")) {
+      
llapRegistryConf.set(HiveConf.ConfVars.LLAP_DAEMON_SERVICE_HOSTS.varname, 
configuredHosts);
+    } else {
+      
llapRegistryConf.set(HiveConf.ConfVars.LLAP_DAEMON_SERVICE_HOSTS.varname, "@" + 
appName);
+    }
+  }

Review Comment:
   Initially if the `appName` was passed as the cli param, it was being 
directly set in `llapRegistryConf`, can this cause the user value to be ignored 
in case of non-dynamic registry here?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to