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 2015/05/30 00:17:28 UTC
hadoop git commit: YARN-3547. FairScheduler: Apps that have no
resource demand should not participate scheduling. (Xianyin Xin via kasha)
Repository: hadoop
Updated Branches:
refs/heads/trunk 7673d4f20 -> 3ae2a6250
YARN-3547. FairScheduler: Apps that have no resource demand should not participate scheduling. (Xianyin Xin via kasha)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3ae2a625
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3ae2a625
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3ae2a625
Branch: refs/heads/trunk
Commit: 3ae2a625018bc8cf431aa19da5bf8fe4ef8c1ad4
Parents: 7673d4f
Author: Karthik Kambatla <ka...@apache.org>
Authored: Fri May 29 15:17:02 2015 -0700
Committer: Karthik Kambatla <ka...@apache.org>
Committed: Fri May 29 15:17:22 2015 -0700
----------------------------------------------------------------------
hadoop-yarn-project/CHANGES.txt | 3 ++
.../scheduler/fair/FSLeafQueue.java | 43 ++++++++++----------
2 files changed, 24 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/3ae2a625/hadoop-yarn-project/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index c1f1044..962d7ba 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -291,6 +291,9 @@ Release 2.8.0 - UNRELEASED
YARN-3006. Improve the error message when attempting manual failover with
auto-failover enabled. (Akira AJISAKA via wangda)
+ YARN-3547. FairScheduler: Apps that have no resource demand should not participate
+ scheduling. (Xianyin Xin via kasha)
+
BUG FIXES
YARN-3197. Confusing log generated by CapacityScheduler. (Varun Saxena
http://git-wip-us.apache.org/repos/asf/hadoop/blob/3ae2a625/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.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/FSLeafQueue.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/FSLeafQueue.java
index 04dbd2f..6779a1b 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/FSLeafQueue.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/FSLeafQueue.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.TreeSet;
import com.google.common.annotations.VisibleForTesting;
import org.apache.commons.logging.Log;
@@ -314,35 +315,33 @@ public class FSLeafQueue extends FSQueue {
return assigned;
}
- Comparator<Schedulable> comparator = policy.getComparator();
- writeLock.lock();
- try {
- Collections.sort(runnableApps, comparator);
- } finally {
- writeLock.unlock();
- }
- // Release write lock here for better performance and avoiding deadlocks.
- // runnableApps can be in unsorted state because of this section,
- // but we can accept it in practice since the probability is low.
+ // Apps that have resource demands.
+ TreeSet<FSAppAttempt> pendingForResourceApps =
+ new TreeSet<FSAppAttempt>(policy.getComparator());
readLock.lock();
try {
- for (FSAppAttempt sched : runnableApps) {
- if (SchedulerAppUtils.isBlacklisted(sched, node, LOG)) {
- continue;
- }
-
- assigned = sched.assignContainer(node);
- if (!assigned.equals(Resources.none())) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Assigned container in queue:" + getName() + " " +
- "container:" + assigned);
- }
- break;
+ for (FSAppAttempt app : runnableApps) {
+ Resource pending = app.getAppAttemptResourceUsage().getPending();
+ if (!pending.equals(Resources.none())) {
+ pendingForResourceApps.add(app);
}
}
} finally {
readLock.unlock();
}
+ for (FSAppAttempt sched : pendingForResourceApps) {
+ if (SchedulerAppUtils.isBlacklisted(sched, node, LOG)) {
+ continue;
+ }
+ assigned = sched.assignContainer(node);
+ if (!assigned.equals(Resources.none())) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Assigned container in queue:" + getName() + " " +
+ "container:" + assigned);
+ }
+ break;
+ }
+ }
return assigned;
}