[ 
https://issues.apache.org/jira/browse/YARN-11358?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17624186#comment-17624186
 ] 

ASF GitHub Bot commented on YARN-11358:
---------------------------------------

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


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java:
##########
@@ -2036,27 +2048,34 @@ private <R> Map<SubClusterInfo, R> 
invokeConcurrent(Collection<SubClusterInfo> c
               getMethod(request.getMethodName(), request.getTypes());
           Object retObj = method.invoke(interceptor, request.getParams());
           R ret = clazz.cast(retObj);
-          return ret;
+          return Pair.of(ret, null);
         } catch (Exception e) {
           LOG.error("SubCluster {} failed to call {} method.",
               info.getSubClusterId(), request.getMethodName(), e);
-          return null;
+          return Pair.of(null, e);
         }
       });
     }
 
     clusterIds.stream().forEach(clusterId -> {
       try {
-        Future<R> future = compSvc.take();
-        R response = future.get();
+        Future<Pair<R, Exception>> future = compSvc.take();
+        Pair<R, Exception> pair = future.get();
+        R response = pair.getKey();
         if (response != null) {
           results.put(clusterId, response);
         }
+        Exception exception = pair.getRight();

Review Comment:
   I will fix it.





> [Federation] Add FederationInterceptor#allow-partial-result config.
> -------------------------------------------------------------------
>
>                 Key: YARN-11358
>                 URL: https://issues.apache.org/jira/browse/YARN-11358
>             Project: Hadoop YARN
>          Issue Type: Improvement
>          Components: federation, router
>    Affects Versions: 3.4.0
>            Reporter: fanshilun
>            Assignee: fanshilun
>            Priority: Major
>              Labels: pull-request-available
>
> When we use Federation, we will have multiple sub-clusters, and some 
> interfaces need to call all clusters to get results, 
> such as getNodes, getNodeToLabels, etc.
> But if the sub-cluster is unavailable when we call the interface, should the 
> interface return the result?
> The current code is to return the result.If the result is returned, the 
> result information is inaccurate; 
> if the result is not returned, it is not user-friendly
> We'd better add a parameter control, the user chooses whether to report an 
> error or return the result.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to