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 ka...@apache.org on 2017/02/09 22:45:13 UTC
hadoop git commit: YARN-6144. FairScheduler: preempted resources can
become negative. (Miklos Szegedi via kasha)
Repository: hadoop
Updated Branches:
refs/heads/trunk 0c01cf579 -> 08f93978f
YARN-6144. FairScheduler: preempted resources can become negative. (Miklos Szegedi via kasha)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/08f93978
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/08f93978
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/08f93978
Branch: refs/heads/trunk
Commit: 08f93978f3ec724b24a93d7ef538f158da75802f
Parents: 0c01cf5
Author: Karthik Kambatla <ka...@cloudera.com>
Authored: Thu Feb 9 14:45:04 2017 -0800
Committer: Karthik Kambatla <ka...@cloudera.com>
Committed: Thu Feb 9 14:45:04 2017 -0800
----------------------------------------------------------------------
.../scheduler/fair/FSAppAttempt.java | 16 +++++++++-------
.../scheduler/fair/TestFairScheduler.java | 16 ++++++++++++++++
2 files changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/08f93978/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java
index 0715e3a..9e57fa7 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.java
@@ -543,18 +543,20 @@ public class FSAppAttempt extends SchedulerApplicationAttempt
}
void trackContainerForPreemption(RMContainer container) {
- containersToPreempt.add(container);
- synchronized (preemptedResources) {
- Resources.addTo(preemptedResources, container.getAllocatedResource());
+ if (containersToPreempt.add(container)) {
+ synchronized (preemptedResources) {
+ Resources.addTo(preemptedResources, container.getAllocatedResource());
+ }
}
}
private void untrackContainerForPreemption(RMContainer container) {
- synchronized (preemptedResources) {
- Resources.subtractFrom(preemptedResources,
- container.getAllocatedResource());
+ if (containersToPreempt.remove(container)) {
+ synchronized (preemptedResources) {
+ Resources.subtractFrom(preemptedResources,
+ container.getAllocatedResource());
+ }
}
- containersToPreempt.remove(container);
}
Set<RMContainer> getPreemptionContainers() {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/08f93978/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
index b1e412b..ce32459 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java
@@ -3649,6 +3649,8 @@ public class TestFairScheduler extends FairSchedulerTestBase {
scheduler.handle(updateEvent);
assertEquals("Application1's AM should be finished",
0, app1.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app1.getResourceUsage());
assertEquals("Application3's AM should be running",
1, app3.getLiveContainers().size());
assertEquals("Application3's AM requests 1024 MB memory",
@@ -3667,6 +3669,8 @@ public class TestFairScheduler extends FairSchedulerTestBase {
0, app4.getAMResource().getMemorySize());
assertEquals("Application4's AM should not be running",
0, app4.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app4.getResourceUsage());
assertEquals("Queue1's AM resource usage should be 2048 MB memory",
2048, queue1.getAmResourceUsage().getMemorySize());
@@ -3681,6 +3685,8 @@ public class TestFairScheduler extends FairSchedulerTestBase {
0, app5.getAMResource().getMemorySize());
assertEquals("Application5's AM should not be running",
0, app5.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app5.getResourceUsage());
assertEquals("Queue1's AM resource usage should be 2048 MB memory",
2048, queue1.getAmResourceUsage().getMemorySize());
@@ -3692,6 +3698,8 @@ public class TestFairScheduler extends FairSchedulerTestBase {
scheduler.handle(updateEvent);
assertEquals("Application5's AM should not be running",
0, app5.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app5.getResourceUsage());
assertEquals("Queue1's AM resource usage should be 2048 MB memory",
2048, queue1.getAmResourceUsage().getMemorySize());
@@ -3706,8 +3714,12 @@ public class TestFairScheduler extends FairSchedulerTestBase {
scheduler.handle(updateEvent);
assertEquals("Application2's AM should be finished",
0, app2.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app2.getResourceUsage());
assertEquals("Application3's AM should be finished",
0, app3.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app3.getResourceUsage());
assertEquals("Application5's AM should be running",
1, app5.getLiveContainers().size());
assertEquals("Application5's AM requests 2048 MB memory",
@@ -3727,6 +3739,8 @@ public class TestFairScheduler extends FairSchedulerTestBase {
scheduler.handle(containerExpired);
assertEquals("Application5's AM should have 0 container",
0, app5.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app5.getResourceUsage());
assertEquals("Queue1's AM resource usage should be 2048 MB memory",
2048, queue1.getAmResourceUsage().getMemorySize());
scheduler.update();
@@ -3749,6 +3763,8 @@ public class TestFairScheduler extends FairSchedulerTestBase {
scheduler.handle(updateEvent);
assertEquals("Application6's AM should not be running",
0, app6.getLiveContainers().size());
+ assertEquals("Finished application usage should be none",
+ Resources.none(), app6.getResourceUsage());
assertEquals("Application6's AM resource shouldn't be updated",
0, app6.getAMResource().getMemorySize());
assertEquals("Queue1's AM resource usage should be 2048 MB memory",
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org