Revert "YARN-3969. Allow jobs to be submitted to reservation that is active but does not have any allocations. (subru via curino)" moving this to branch-2.7 per Akira's request.
This reverts commit 5a1d236ba0f9292bff2a27e3bc8d0e73d7755898.
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 079ca5c..450ec672 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -184,9 +184,6 @@
YARN-3850. NM fails to read files from full disks which can lead to
container logs being lost and other issues (Varun Saxena via jlowe)
- YARN-3969. Allow jobs to be submitted to reservation that is active
- but does not have any allocations. (subru via curino)
-
Release 2.7.0 - 2015-04-20
INCOMPATIBLE CHANGES
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/capacity/ReservationQueue.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ReservationQueue.java
index 19ce9f3..a8d17cf 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ReservationQueue.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ReservationQueue.java
@@ -39,9 +39,12 @@
private PlanQueue parent;
+ private int maxSystemApps;
+
public ReservationQueue(CapacitySchedulerContext cs, String queueName,
PlanQueue parent) throws IOException {
super(cs, queueName, parent, null);
+ maxSystemApps = cs.getConfiguration().getMaximumSystemApplications();
// the following parameters are common to all reservation in the plan
updateQuotas(parent.getUserLimitForReservation(),
parent.getUserLimitFactor(),
@@ -87,6 +90,7 @@
}
setCapacity(capacity);
setAbsoluteCapacity(getParent().getAbsoluteCapacity() * getCapacity());
+ setMaxApplications((int) (maxSystemApps * getAbsoluteCapacity()));
// note: we currently set maxCapacity to capacity
// this might be revised later
setMaxCapacity(entitlement.getMaxCapacity());
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/capacity/TestReservationQueue.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservationQueue.java
index e23e93c..4e6c73d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservationQueue.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestReservationQueue.java
@@ -18,7 +18,6 @@
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity;
-import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
@@ -40,7 +39,6 @@
CapacitySchedulerConfiguration csConf;
CapacitySchedulerContext csContext;
- final static int DEF_MAX_APPS = 10000;
final static int GB = 1024;
private final ResourceCalculator resourceCalculator =
new DefaultResourceCalculator();
@@ -68,13 +66,7 @@
// create a queue
PlanQueue pq = new PlanQueue(csContext, "root", null, null);
reservationQueue = new ReservationQueue(csContext, "a", pq);
- }
- private void validateReservationQueue(double capacity) {
- assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
- reservationQueue.getCapacity() - capacity < CSQueueUtils.EPSILON);
- assertEquals(reservationQueue.maxApplications, DEF_MAX_APPS);
- assertEquals(reservationQueue.maxApplicationsPerUser, DEF_MAX_APPS);
}
@Test
@@ -82,20 +74,25 @@
// verify that setting, adding, subtracting capacity works
reservationQueue.setCapacity(1.0F);
- validateReservationQueue(1);
+ assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
+ reservationQueue.getCapacity() - 1 < CSQueueUtils.EPSILON);
reservationQueue.setEntitlement(new QueueEntitlement(0.9f, 1f));
- validateReservationQueue(0.9);
+ assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
+ reservationQueue.getCapacity() - 0.9 < CSQueueUtils.EPSILON);
reservationQueue.setEntitlement(new QueueEntitlement(1f, 1f));
- validateReservationQueue(1);
+ assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
+ reservationQueue.getCapacity() - 1 < CSQueueUtils.EPSILON);
reservationQueue.setEntitlement(new QueueEntitlement(0f, 1f));
- validateReservationQueue(0);
+ assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
+ reservationQueue.getCapacity() < CSQueueUtils.EPSILON);
try {
reservationQueue.setEntitlement(new QueueEntitlement(1.1f, 1f));
fail();
} catch (SchedulerDynamicEditException iae) {
// expected
- validateReservationQueue(1);
+ assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
+ reservationQueue.getCapacity() - 1 < CSQueueUtils.EPSILON);
}
try {
@@ -103,7 +100,8 @@
fail();
} catch (SchedulerDynamicEditException iae) {
// expected
- validateReservationQueue(1);
+ assertTrue(" actual capacity: " + reservationQueue.getCapacity(),
+ reservationQueue.getCapacity() - 1 < CSQueueUtils.EPSILON);
}
}