diff --git a/YARN-1051-CHANGES.txt b/YARN-1051-CHANGES.txt index 7620cc34c43..5cd11367508 100644 --- a/YARN-1051-CHANGES.txt +++ b/YARN-1051-CHANGES.txt @@ -29,3 +29,6 @@ delegate. (Subru Krishnan and Carlo Curino via subru) YARN-2576. Fixing compilation, javadocs and audit issues to pass test patch in branch. (Subru Krishnan and Carlo Curino via subru) + +YARN-2611. Fixing jenkins findbugs warning and TestRMWebServicesCapacitySched +for branch YARN-1051. (Subru Krishnan and Carlo Curino via subru) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacityOverTimePolicy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacityOverTimePolicy.java index 680f9ae4fad..7552e8cc8b7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacityOverTimePolicy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacityOverTimePolicy.java @@ -62,6 +62,11 @@ public class CapacityOverTimePolicy implements SharingPolicy { // it should be easy to remove this limitation @Override public void init(String reservationQueuePath, Configuration conf) { + if (!(conf instanceof CapacitySchedulerConfiguration)) { + throw new IllegalArgumentException("Unexpected conf type: " + + conf.getClass().getSimpleName() + " only supported conf is: " + + CapacitySchedulerConfiguration.class.getSimpleName()); + } this.conf = (CapacitySchedulerConfiguration) conf; validWindow = this.conf.getReservationWindow(reservationQueuePath); maxInst = this.conf.getInstantaneousMaxCapacity(reservationQueuePath) / 100; @@ -203,7 +208,7 @@ public class CapacityOverTimePolicy implements SharingPolicy { * The comparison/multiplication behaviors of IntegralResource are consistent * with the DefaultResourceCalculator. */ - public class IntegralResource { + private static class IntegralResource { long memory; long vcores; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacitySchedulerPlanFollower.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacitySchedulerPlanFollower.java index cfa172c4c6d..0c0fbc0789c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacitySchedulerPlanFollower.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/CapacitySchedulerPlanFollower.java @@ -326,7 +326,7 @@ public class CapacitySchedulerPlanFollower implements PlanFollower { return currentReservations; } - private class ReservationAllocationComparator implements + private static class ReservationAllocationComparator implements Comparator { CapacityScheduler scheduler; long now; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/InMemoryPlan.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/InMemoryPlan.java index 8394a49fd2b..ce2e7d7b8e5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/InMemoryPlan.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/InMemoryPlan.java @@ -138,7 +138,7 @@ class InMemoryPlan implements Plan { rleSparseVector.removeInterval(r.getKey(), r.getValue()); } if (resAlloc.isEmpty()) { - userResourceAlloc.remove(resAlloc); + userResourceAlloc.remove(user); } } @@ -311,9 +311,9 @@ class InMemoryPlan implements Plan { public void archiveCompletedReservations(long tick) { // Since we are looking for old reservations, read lock is optimal LOG.debug("Running archival at time: {}", tick); - readLock.lock(); List expiredReservations = new ArrayList(); + readLock.lock(); // archive reservations and delete the ones which are beyond // the reservation policy "window" try { @@ -351,9 +351,9 @@ class InMemoryPlan implements Plan { @Override public Set getReservationsAtTime(long tick) { - readLock.lock(); ReservationInterval searchInterval = new ReservationInterval(tick, Long.MAX_VALUE); + readLock.lock(); try { SortedMap> reservations = currentReservations.headMap(searchInterval, true); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/ReservationInterval.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/ReservationInterval.java index aabbcb3cc5d..1ca296967bc 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/ReservationInterval.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/ReservationInterval.java @@ -78,6 +78,36 @@ public class ReservationInterval implements Comparable { } } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (int) (endTime ^ (endTime >>> 32)); + result = prime * result + (int) (startTime ^ (startTime >>> 32)); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof ReservationInterval)) { + return false; + } + ReservationInterval other = (ReservationInterval) obj; + if (endTime != other.endTime) { + return false; + } + if (startTime != other.startTime) { + return false; + } + return true; + } + public String toString() { return "[" + startTime + ", " + endTime + "]"; } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/SimpleCapacityReplanner.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/SimpleCapacityReplanner.java index 5378405ad0a..e38dd3cd7d3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/SimpleCapacityReplanner.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/reservation/SimpleCapacityReplanner.java @@ -70,6 +70,11 @@ public class SimpleCapacityReplanner implements Planner { @Override public void init(String planQueueName, Configuration conf) { + if (!(conf instanceof CapacitySchedulerConfiguration)) { + throw new IllegalArgumentException("Unexpected conf type: " + + conf.getClass().getSimpleName() + " only supported conf is: " + + CapacitySchedulerConfiguration.class.getSimpleName()); + } this.lengthOfCheckZone = ((CapacitySchedulerConfiguration) conf) .getEnforcementWindow(planQueueName); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java index e57e5cfea8c..e58c30fb122 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesCapacitySched.java @@ -357,10 +357,10 @@ public class TestRMWebServicesCapacitySched extends JerseyTest { private void verifySubQueue(JSONObject info, String q, float parentAbsCapacity, float parentAbsMaxCapacity) throws JSONException, Exception { - int numExpectedElements = 11; + int numExpectedElements = 12; boolean isParentQueue = true; if (!info.has("queues")) { - numExpectedElements = 21; + numExpectedElements = 22; isParentQueue = false; } assertEquals("incorrect number of elements", numExpectedElements, info.length());