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

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

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


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/MockDefaultRequestInterceptorREST.java:
##########
@@ -661,4 +683,108 @@ public Response updateAppQueue(AppQueue targetQueue, 
HttpServletRequest hsr, Str
     AppQueue targetAppQueue = new AppQueue(targetQueue.getQueue());
     return Response.status(Status.OK).entity(targetAppQueue).build();
   }
+
+  public void updateApplicationState(YarnApplicationState appState, String 
appId)
+      throws AuthorizationException, YarnException, InterruptedException, 
IOException {
+    validateRunning();
+    ApplicationId applicationId = ApplicationId.fromString(appId);
+    if (!applicationMap.containsKey(applicationId)) {
+      throw new NotFoundException("app with id: " + appId + " not found");
+    }
+    ApplicationReport appReport = applicationMap.get(applicationId);
+    appReport.setYarnApplicationState(appState);
+  }
+
+  @Override
+  public ApplicationStatisticsInfo getAppStatistics(
+      HttpServletRequest hsr, Set<String> stateQueries, Set<String> 
typeQueries) {
+    if (!isRunning) {
+      throw new RuntimeException("RM is stopped");
+    }
+
+    Map<String, StatisticsItemInfo> itemInfoMap = new HashMap<>();
+
+    for (HashMap.Entry<ApplicationId, ApplicationReport> item : 
applicationMap.entrySet()) {
+
+      ApplicationReport applicationReport = item.getValue();
+      YarnApplicationState appState = 
applicationReport.getYarnApplicationState();
+      String appType = applicationReport.getApplicationType();
+
+      if (stateQueries.contains(appState.name()) && 
typeQueries.contains(appType)) {
+        String itemInfoMapKey = appState.toString() + "_" + appType;
+        StatisticsItemInfo itemInfo = itemInfoMap.getOrDefault(itemInfoMapKey, 
null);
+        if (itemInfo == null) {
+          itemInfo = new StatisticsItemInfo(appState, appType, 1);
+        } else {
+          long newCount = itemInfo.getCount() + 1;
+          itemInfo.setCount(newCount);
+        }
+        itemInfoMap.put(itemInfoMapKey, itemInfo);
+      }
+    }
+
+    ArrayList<StatisticsItemInfo> itemInfos = new 
ArrayList<>(itemInfoMap.values());
+
+    return new ApplicationStatisticsInfo(itemInfos);

Review Comment:
   I will fix it.



##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/MockDefaultRequestInterceptorREST.java:
##########
@@ -661,4 +683,108 @@ public Response updateAppQueue(AppQueue targetQueue, 
HttpServletRequest hsr, Str
     AppQueue targetAppQueue = new AppQueue(targetQueue.getQueue());
     return Response.status(Status.OK).entity(targetAppQueue).build();
   }
+
+  public void updateApplicationState(YarnApplicationState appState, String 
appId)
+      throws AuthorizationException, YarnException, InterruptedException, 
IOException {
+    validateRunning();
+    ApplicationId applicationId = ApplicationId.fromString(appId);
+    if (!applicationMap.containsKey(applicationId)) {
+      throw new NotFoundException("app with id: " + appId + " not found");
+    }
+    ApplicationReport appReport = applicationMap.get(applicationId);
+    appReport.setYarnApplicationState(appState);
+  }
+
+  @Override
+  public ApplicationStatisticsInfo getAppStatistics(
+      HttpServletRequest hsr, Set<String> stateQueries, Set<String> 
typeQueries) {
+    if (!isRunning) {
+      throw new RuntimeException("RM is stopped");
+    }
+
+    Map<String, StatisticsItemInfo> itemInfoMap = new HashMap<>();
+
+    for (HashMap.Entry<ApplicationId, ApplicationReport> item : 
applicationMap.entrySet()) {
+
+      ApplicationReport applicationReport = item.getValue();
+      YarnApplicationState appState = 
applicationReport.getYarnApplicationState();
+      String appType = applicationReport.getApplicationType();
+
+      if (stateQueries.contains(appState.name()) && 
typeQueries.contains(appType)) {
+        String itemInfoMapKey = appState.toString() + "_" + appType;
+        StatisticsItemInfo itemInfo = itemInfoMap.getOrDefault(itemInfoMapKey, 
null);
+        if (itemInfo == null) {
+          itemInfo = new StatisticsItemInfo(appState, appType, 1);
+        } else {
+          long newCount = itemInfo.getCount() + 1;
+          itemInfo.setCount(newCount);
+        }
+        itemInfoMap.put(itemInfoMapKey, itemInfo);
+      }
+    }
+
+    ArrayList<StatisticsItemInfo> itemInfos = new 
ArrayList<>(itemInfoMap.values());
+
+    return new ApplicationStatisticsInfo(itemInfos);
+  }
+
+  @Override
+  public AppActivitiesInfo getAppActivities(
+      HttpServletRequest hsr, String appId, String time, Set<String> 
requestPriorities,
+      Set<String> allocationRequestIds, String groupBy, String limit, 
Set<String> actions,
+      boolean summarize) {
+    if (!isRunning) {
+      throw new RuntimeException("RM is stopped");
+    }
+
+    ApplicationId applicationId = ApplicationId.fromString(appId);
+    if (!applicationMap.containsKey(applicationId)) {
+      throw new NotFoundException("app with id: " + appId + " not found");
+    }
+
+    SchedulerNode schedulerNode =

Review Comment:
   I will fix it.





> [Federation] Add getAppActivities, getAppStatistics REST APIs for Router
> ------------------------------------------------------------------------
>
>                 Key: YARN-11219
>                 URL: https://issues.apache.org/jira/browse/YARN-11219
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: federation
>    Affects Versions: 3.4.0
>            Reporter: fanshilun
>            Assignee: fanshilun
>            Priority: Major
>              Labels: pull-request-available
>




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