|
@@ -57,6 +57,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerStat
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeCleanContainerEvent;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeCleanContainerEvent;
|
|
import org.apache.hadoop.yarn.util.resource.Resources;
|
|
import org.apache.hadoop.yarn.util.resource.Resources;
|
|
|
|
|
|
|
|
+import com.google.common.annotations.VisibleForTesting;
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.common.collect.HashMultiset;
|
|
import com.google.common.collect.HashMultiset;
|
|
import com.google.common.collect.Multiset;
|
|
import com.google.common.collect.Multiset;
|
|
@@ -488,8 +489,10 @@ public class SchedulerApplicationAttempt {
|
|
}
|
|
}
|
|
|
|
|
|
public synchronized void addSchedulingOpportunity(Priority priority) {
|
|
public synchronized void addSchedulingOpportunity(Priority priority) {
|
|
- schedulingOpportunities.setCount(priority,
|
|
|
|
- schedulingOpportunities.count(priority) + 1);
|
|
|
|
|
|
+ int count = schedulingOpportunities.count(priority);
|
|
|
|
+ if (count < Integer.MAX_VALUE) {
|
|
|
|
+ schedulingOpportunities.setCount(priority, count + 1);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
public synchronized void subtractSchedulingOpportunity(Priority priority) {
|
|
public synchronized void subtractSchedulingOpportunity(Priority priority) {
|
|
@@ -523,6 +526,11 @@ public class SchedulerApplicationAttempt {
|
|
schedulingOpportunities.setCount(priority, 0);
|
|
schedulingOpportunities.setCount(priority, 0);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @VisibleForTesting
|
|
|
|
+ void setSchedulingOpportunities(Priority priority, int count) {
|
|
|
|
+ schedulingOpportunities.setCount(priority, count);
|
|
|
|
+ }
|
|
|
|
+
|
|
synchronized AggregateAppResourceUsage getRunningAggregateAppResourceUsage() {
|
|
synchronized AggregateAppResourceUsage getRunningAggregateAppResourceUsage() {
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
// Don't walk the whole container list if the resources were computed
|
|
// Don't walk the whole container list if the resources were computed
|