Przeglądaj źródła

YARN-2611. Fixing jenkins findbugs warning and TestRMWebServicesCapacitySched for branch YARN-1051. Contributed by Subru Krishnan and Carlo Curino.

subru 10 lat temu
rodzic
commit
c47464aba4

+ 3 - 0
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
 YARN-2576. Fixing compilation, javadocs and audit issues to pass
 test patch in branch. (Subru Krishnan and Carlo Curino  via subru)
 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)

+ 6 - 1
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
   // it should be easy to remove this limitation
   @Override
   @Override
   public void init(String reservationQueuePath, Configuration conf) {
   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;
     this.conf = (CapacitySchedulerConfiguration) conf;
     validWindow = this.conf.getReservationWindow(reservationQueuePath);
     validWindow = this.conf.getReservationWindow(reservationQueuePath);
     maxInst = this.conf.getInstantaneousMaxCapacity(reservationQueuePath) / 100;
     maxInst = this.conf.getInstantaneousMaxCapacity(reservationQueuePath) / 100;
@@ -203,7 +208,7 @@ public class CapacityOverTimePolicy implements SharingPolicy {
    * The comparison/multiplication behaviors of IntegralResource are consistent
    * The comparison/multiplication behaviors of IntegralResource are consistent
    * with the DefaultResourceCalculator.
    * with the DefaultResourceCalculator.
    */
    */
-  public class IntegralResource {
+  private static class IntegralResource {
     long memory;
     long memory;
     long vcores;
     long vcores;
 
 

+ 1 - 1
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;
     return currentReservations;
   }
   }
 
 
-  private class ReservationAllocationComparator implements
+  private static class ReservationAllocationComparator implements
       Comparator<ReservationAllocation> {
       Comparator<ReservationAllocation> {
     CapacityScheduler scheduler;
     CapacityScheduler scheduler;
     long now;
     long now;

+ 3 - 3
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());
       rleSparseVector.removeInterval(r.getKey(), r.getValue());
     }
     }
     if (resAlloc.isEmpty()) {
     if (resAlloc.isEmpty()) {
-      userResourceAlloc.remove(resAlloc);
+      userResourceAlloc.remove(user);
     }
     }
   }
   }
 
 
@@ -311,9 +311,9 @@ class InMemoryPlan implements Plan {
   public void archiveCompletedReservations(long tick) {
   public void archiveCompletedReservations(long tick) {
     // Since we are looking for old reservations, read lock is optimal
     // Since we are looking for old reservations, read lock is optimal
     LOG.debug("Running archival at time: {}", tick);
     LOG.debug("Running archival at time: {}", tick);
-    readLock.lock();
     List<InMemoryReservationAllocation> expiredReservations =
     List<InMemoryReservationAllocation> expiredReservations =
         new ArrayList<InMemoryReservationAllocation>();
         new ArrayList<InMemoryReservationAllocation>();
+    readLock.lock();
     // archive reservations and delete the ones which are beyond
     // archive reservations and delete the ones which are beyond
     // the reservation policy "window"
     // the reservation policy "window"
     try {
     try {
@@ -351,9 +351,9 @@ class InMemoryPlan implements Plan {
 
 
   @Override
   @Override
   public Set<ReservationAllocation> getReservationsAtTime(long tick) {
   public Set<ReservationAllocation> getReservationsAtTime(long tick) {
-    readLock.lock();
     ReservationInterval searchInterval =
     ReservationInterval searchInterval =
         new ReservationInterval(tick, Long.MAX_VALUE);
         new ReservationInterval(tick, Long.MAX_VALUE);
+    readLock.lock();
     try {
     try {
       SortedMap<ReservationInterval, Set<InMemoryReservationAllocation>> reservations =
       SortedMap<ReservationInterval, Set<InMemoryReservationAllocation>> reservations =
           currentReservations.headMap(searchInterval, true);
           currentReservations.headMap(searchInterval, true);

+ 30 - 0
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<ReservationInterval> {
     }
     }
   }
   }
 
 
+  @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() {
   public String toString() {
     return "[" + startTime + ", " + endTime + "]";
     return "[" + startTime + ", " + endTime + "]";
   }
   }

+ 5 - 0
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
   @Override
   public void init(String planQueueName, Configuration conf) {
   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 =
     this.lengthOfCheckZone =
         ((CapacitySchedulerConfiguration) conf)
         ((CapacitySchedulerConfiguration) conf)
             .getEnforcementWindow(planQueueName);
             .getEnforcementWindow(planQueueName);

+ 2 - 2
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, 
   private void verifySubQueue(JSONObject info, String q, 
       float parentAbsCapacity, float parentAbsMaxCapacity)
       float parentAbsCapacity, float parentAbsMaxCapacity)
       throws JSONException, Exception {
       throws JSONException, Exception {
-    int numExpectedElements = 11;
+    int numExpectedElements = 12;
     boolean isParentQueue = true;
     boolean isParentQueue = true;
     if (!info.has("queues")) {
     if (!info.has("queues")) {
-      numExpectedElements = 21;
+      numExpectedElements = 22;
       isParentQueue = false;
       isParentQueue = false;
     }
     }
     assertEquals("incorrect number of elements", numExpectedElements, info.length());
     assertEquals("incorrect number of elements", numExpectedElements, info.length());