From f2d150ea1205b77a75c347ace667b4cd060aaf40 Mon Sep 17 00:00:00 2001 From: Karthik Kambatla Date: Wed, 17 Dec 2014 12:03:16 -0800 Subject: [PATCH] YARN-2964. FSLeafQueue#assignContainer - document the reason for using both write and read locks. (Tsuyoshi Ozawa via kasha) --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../server/resourcemanager/scheduler/fair/FSLeafQueue.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 37147d7b24f..42ffa9b4922 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -231,6 +231,9 @@ Release 2.7.0 - UNRELEASED YARN-2914. [YARN-1492] Potential race condition in Singleton implementation of SharedCacheUploaderMetrics, CleanerMetrics, ClientSCMMetrics. (Varun Saxena via kasha) + YARN-2964. FSLeafQueue#assignContainer - document the reason for using both write and + read locks. (Tsuyoshi Ozawa via kasha) + Release 2.6.0 - 2014-11-18 INCOMPATIBLE CHANGES 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 bbf1be71755..63450da05c3 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 @@ -252,6 +252,9 @@ public class FSLeafQueue extends FSQueue { } 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. readLock.lock(); try { for (FSAppAttempt sched : runnableApps) {