slfan1989 commented on code in PR #4543:
URL: https://github.com/apache/hadoop/pull/4543#discussion_r921598076


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java:
##########
@@ -1336,7 +1336,51 @@ public AppAttemptInfo getAppAttempt(HttpServletRequest 
req,
   @Override
   public ContainersInfo getContainers(HttpServletRequest req,
       HttpServletResponse res, String appId, String appAttemptId) {
-    throw new NotImplementedException("Code is not implemented");
+    ContainersInfo containersInfo = new ContainersInfo();
+
+    Map<SubClusterId, SubClusterInfo> subClustersActive = null;
+    try {
+      subClustersActive = federationFacade.getSubClusters(true);
+    } catch (YarnException e) {
+      LOG.error("Get All active sub cluster(s) error.", e);
+      return containersInfo;
+    }
+
+    // Send the requests in parallel
+    CompletionService<ContainersInfo> compSvc =
+        new ExecutorCompletionService<>(this.threadpool);
+
+    for (final SubClusterInfo info : subClustersActive.values()) {
+      compSvc.submit(() -> {
+        DefaultRequestInterceptorREST interceptor =
+            getOrCreateInterceptorForSubCluster(info.getSubClusterId(), 
info.getRMWebServiceAddress());
+        try {
+          ContainersInfo containers =
+              interceptor.getContainers(req, res, appId, appAttemptId);
+          return containers;
+        } catch (Exception e) {
+          LOG.error("SubCluster {} failed to return GetContainers.",
+              info.getSubClusterId());
+          return null;
+        }
+      });
+    }
+
+    // Collect all the responses in parallel
+    for (int i = 0; i < subClustersActive.size(); i++) {
+      try {
+        Future<ContainersInfo> future = compSvc.take();
+        ContainersInfo containersResponse = future.get();
+
+        if (containersResponse != null) {
+          containersInfo.addAll(containersResponse.getContainers());
+        }
+      } catch (Throwable e) {
+        LOG.warn("Failed to get containers report. ", e);

Review Comment:
   OK, I will fix it.



-- 
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