You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by in...@apache.org on 2021/09/08 17:37:15 UTC
[hadoop] branch trunk updated: YARN-10829. Follow up: Adding null
checks before merging ResourceUsage Report (#3252)
This is an automated email from the ASF dual-hosted git repository.
inigoiri pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new a186460 YARN-10829. Follow up: Adding null checks before merging ResourceUsage Report (#3252)
a186460 is described below
commit a1864600049f81fae434554003a2e7046d73ccb8
Author: Akshat Bordia <31...@users.noreply.github.com>
AuthorDate: Wed Sep 8 23:06:56 2021 +0530
YARN-10829. Follow up: Adding null checks before merging ResourceUsage Report (#3252)
---
.../router/clientrm/RouterYarnClientUtils.java | 61 ++++++++++++----------
.../router/clientrm/TestRouterYarnClientUtils.java | 42 +++++++++++++++
2 files changed, 75 insertions(+), 28 deletions(-)
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/RouterYarnClientUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/RouterYarnClientUtils.java
index 9c36f30..934636b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/RouterYarnClientUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/RouterYarnClientUtils.java
@@ -133,43 +133,48 @@ public final class RouterYarnClientUtils {
ApplicationResourceUsageReport uamResourceReport =
uam.getApplicationResourceUsageReport();
- amResourceReport.setNumUsedContainers(
- amResourceReport.getNumUsedContainers() +
- uamResourceReport.getNumUsedContainers());
+ if (amResourceReport == null) {
+ am.setApplicationResourceUsageReport(uamResourceReport);
+ } else if (uamResourceReport != null) {
- amResourceReport.setNumReservedContainers(
- amResourceReport.getNumReservedContainers() +
- uamResourceReport.getNumReservedContainers());
+ amResourceReport.setNumUsedContainers(
+ amResourceReport.getNumUsedContainers() +
+ uamResourceReport.getNumUsedContainers());
- amResourceReport.setUsedResources(Resources.add(
- amResourceReport.getUsedResources(),
- uamResourceReport.getUsedResources()));
+ amResourceReport.setNumReservedContainers(
+ amResourceReport.getNumReservedContainers() +
+ uamResourceReport.getNumReservedContainers());
- amResourceReport.setReservedResources(Resources.add(
- amResourceReport.getReservedResources(),
- uamResourceReport.getReservedResources()));
+ amResourceReport.setUsedResources(Resources.add(
+ amResourceReport.getUsedResources(),
+ uamResourceReport.getUsedResources()));
- amResourceReport.setNeededResources(Resources.add(
- amResourceReport.getNeededResources(),
- uamResourceReport.getNeededResources()));
+ amResourceReport.setReservedResources(Resources.add(
+ amResourceReport.getReservedResources(),
+ uamResourceReport.getReservedResources()));
- amResourceReport.setMemorySeconds(
- amResourceReport.getMemorySeconds() +
- uamResourceReport.getMemorySeconds());
+ amResourceReport.setNeededResources(Resources.add(
+ amResourceReport.getNeededResources(),
+ uamResourceReport.getNeededResources()));
- amResourceReport.setVcoreSeconds(
- amResourceReport.getVcoreSeconds() +
- uamResourceReport.getVcoreSeconds());
+ amResourceReport.setMemorySeconds(
+ amResourceReport.getMemorySeconds() +
+ uamResourceReport.getMemorySeconds());
- amResourceReport.setQueueUsagePercentage(
- amResourceReport.getQueueUsagePercentage() +
- uamResourceReport.getQueueUsagePercentage());
+ amResourceReport.setVcoreSeconds(
+ amResourceReport.getVcoreSeconds() +
+ uamResourceReport.getVcoreSeconds());
- amResourceReport.setClusterUsagePercentage(
- amResourceReport.getClusterUsagePercentage() +
- uamResourceReport.getClusterUsagePercentage());
+ amResourceReport.setQueueUsagePercentage(
+ amResourceReport.getQueueUsagePercentage() +
+ uamResourceReport.getQueueUsagePercentage());
- am.setApplicationResourceUsageReport(amResourceReport);
+ amResourceReport.setClusterUsagePercentage(
+ amResourceReport.getClusterUsagePercentage() +
+ uamResourceReport.getClusterUsagePercentage());
+
+ am.setApplicationResourceUsageReport(amResourceReport);
+ }
}
/**
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestRouterYarnClientUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestRouterYarnClientUtils.java
index 3b64c23..c91da35 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestRouterYarnClientUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestRouterYarnClientUtils.java
@@ -125,6 +125,48 @@ public class TestRouterYarnClientUtils {
}
/**
+ * This test validates the correctness of
+ * RouterYarnClientUtils#mergeApplications when
+ * ApplicationResourceUsageReport might be null.
+ */
+ @Test
+ public void testMergeApplicationsNullResourceUsage() {
+ ApplicationId appId = ApplicationId.newInstance(1234, 1);
+ ApplicationReport appReport = ApplicationReport.newInstance(
+ appId, ApplicationAttemptId.newInstance(appId, 1),
+ "user", "queue", "app1", "host",
+ 124, null, YarnApplicationState.RUNNING,
+ "diagnostics", "url", 0, 0,
+ 0, FinalApplicationStatus.SUCCEEDED, null, "N/A",
+ 0.53789f, "YARN", null, null, false, null, null, null);
+
+ ApplicationReport uamAppReport = ApplicationReport.newInstance(
+ appId, ApplicationAttemptId.newInstance(appId, 1),
+ "user", "queue", "app1", "host",
+ 124, null, YarnApplicationState.RUNNING,
+ "diagnostics", "url", 0, 0,
+ 0, FinalApplicationStatus.SUCCEEDED, null, "N/A",
+ 0.53789f, "YARN", null, null, true, null, null, null);
+
+
+ ArrayList<GetApplicationsResponse> responses = new ArrayList<>();
+ List<ApplicationReport> applications = new ArrayList<>();
+ applications.add(appReport);
+ applications.add(uamAppReport);
+ responses.add(GetApplicationsResponse.newInstance(applications));
+
+ GetApplicationsResponse result = RouterYarnClientUtils.
+ mergeApplications(responses, false);
+ Assert.assertNotNull(result);
+ Assert.assertEquals(1, result.getApplicationList().size());
+
+ String appName = result.getApplicationList().get(0).getName();
+
+ // Check that no Unmanaged applications are added to the result
+ Assert.assertFalse(appName.contains(UnmanagedApplicationManager.APP_NAME));
+ }
+
+ /**
* This generates a GetApplicationsResponse with 2 applications with
* same ApplicationId.
* @param value Used as Id in ApplicationId
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org