YARN-6582. FSAppAttempt demand can be updated atomically in updateDemand(). (Karthik Kambatla via Yufei Gu)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/87590090 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/87590090 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/87590090 Branch: refs/heads/YARN-1011 Commit: 87590090c887829e874a7132be9cf8de061437d6 Parents: 3fd6a2d Author: Yufei Gu <yu...@apache.org> Authored: Thu May 25 14:22:13 2017 -0700 Committer: Yufei Gu <yu...@apache.org> Committed: Thu May 25 14:22:13 2017 -0700 ---------------------------------------------------------------------- .../scheduler/fair/FSAppAttempt.java | 23 +++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/87590090/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSAppAttempt.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/FSAppAttempt.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/FSAppAttempt.java index 4f7e164..a5772ba 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/FSAppAttempt.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/FSAppAttempt.java @@ -1286,24 +1286,21 @@ public class FSAppAttempt extends SchedulerApplicationAttempt @Override public void updateDemand() { - demand = Resources.createResource(0); // Demand is current consumption plus outstanding requests - Resources.addTo(demand, getCurrentConsumption()); + Resource tmpDemand = Resources.clone(getCurrentConsumption()); // Add up outstanding resource requests - try { - writeLock.lock(); - for (SchedulerRequestKey k : getSchedulerKeys()) { - PendingAsk pendingAsk = getPendingAsk(k, ResourceRequest.ANY); - if (pendingAsk.getCount() > 0) { - Resources.multiplyAndAddTo(demand, - pendingAsk.getPerAllocationResource(), - pendingAsk.getCount()); - } + for (SchedulerRequestKey k : getSchedulerKeys()) { + PendingAsk pendingAsk = getPendingAsk(k, ResourceRequest.ANY); + if (pendingAsk.getCount() > 0) { + Resources.multiplyAndAddTo(tmpDemand, + pendingAsk.getPerAllocationResource(), + pendingAsk.getCount()); } - } finally { - writeLock.unlock(); } + + // Update demand + demand = tmpDemand; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org