YARN-7133. Clean up lock-try order in fair scheduler. (Szilard Nemeth via Haibo Chen)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ea2c6c8c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ea2c6c8c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ea2c6c8c Branch: refs/heads/HADOOP-15461 Commit: ea2c6c8c9a55813a19b3dbd0d29747d6a7739030 Parents: e673dd1 Author: Haibo Chen <haiboc...@apache.org> Authored: Tue Jul 24 12:46:15 2018 -0700 Committer: Haibo Chen <haiboc...@apache.org> Committed: Tue Jul 24 12:46:59 2018 -0700 ---------------------------------------------------------------------- .../scheduler/fair/FairScheduler.java | 36 ++++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ea2c6c8c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.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/FairScheduler.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/FairScheduler.java index eb9f6af..20d1afe 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/FairScheduler.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/FairScheduler.java @@ -467,8 +467,8 @@ public class FairScheduler extends return; } + writeLock.lock(); try { - writeLock.lock(); RMApp rmApp = rmContext.getRMApps().get(applicationId); FSLeafQueue queue = assignToQueue(rmApp, queueName, user); if (queue == null) { @@ -550,8 +550,8 @@ public class FairScheduler extends ApplicationAttemptId applicationAttemptId, boolean transferStateFromPreviousAttempt, boolean isAttemptRecovering) { + writeLock.lock(); try { - writeLock.lock(); SchedulerApplication<FSAppAttempt> application = applications.get( applicationAttemptId.getApplicationId()); String user = application.getUser(); @@ -653,8 +653,8 @@ public class FairScheduler extends private void removeApplicationAttempt( ApplicationAttemptId applicationAttemptId, RMAppAttemptState rmAppAttemptFinalState, boolean keepContainers) { + writeLock.lock(); try { - writeLock.lock(); LOG.info("Application " + applicationAttemptId + " is done. finalState=" + rmAppAttemptFinalState); FSAppAttempt attempt = getApplicationAttempt(applicationAttemptId); @@ -720,8 +720,8 @@ public class FairScheduler extends protected void completedContainerInternal( RMContainer rmContainer, ContainerStatus containerStatus, RMContainerEventType event) { + writeLock.lock(); try { - writeLock.lock(); Container container = rmContainer.getContainer(); // Get the application for the finished container @@ -768,8 +768,8 @@ public class FairScheduler extends private void addNode(List<NMContainerStatus> containerReports, RMNode node) { + writeLock.lock(); try { - writeLock.lock(); FSSchedulerNode schedulerNode = new FSSchedulerNode(node, usePortForNodeName); nodeTracker.addNode(schedulerNode); @@ -790,8 +790,8 @@ public class FairScheduler extends } private void removeNode(RMNode rmNode) { + writeLock.lock(); try { - writeLock.lock(); NodeId nodeId = rmNode.getNodeID(); FSSchedulerNode node = nodeTracker.getNode(nodeId); if (node == null) { @@ -988,8 +988,8 @@ public class FairScheduler extends @Override protected void nodeUpdate(RMNode nm) { + writeLock.lock(); try { - writeLock.lock(); long start = getClock().getTime(); super.nodeUpdate(nm); @@ -1089,8 +1089,8 @@ public class FairScheduler extends @VisibleForTesting void attemptScheduling(FSSchedulerNode node) { + writeLock.lock(); try { - writeLock.lock(); if (rmContext.isWorkPreservingRecoveryEnabled() && !rmContext .isSchedulerReadyForAllocatingContainers()) { return; @@ -1305,8 +1305,8 @@ public class FairScheduler extends private String resolveReservationQueueName(String queueName, ApplicationId applicationId, ReservationId reservationID, boolean isRecovering) { + readLock.lock(); try { - readLock.lock(); FSQueue queue = queueMgr.getQueue(queueName); if ((queue == null) || !allocConf.isReservable(queue.getQueueName())) { return queueName; @@ -1372,8 +1372,8 @@ public class FairScheduler extends @SuppressWarnings("deprecation") private void initScheduler(Configuration conf) throws IOException { + writeLock.lock(); try { - writeLock.lock(); this.conf = new FairSchedulerConfiguration(conf); validateConf(this.conf); authorizer = YarnAuthorizationProvider.getInstance(conf); @@ -1464,8 +1464,8 @@ public class FairScheduler extends } private void startSchedulerThreads() { + writeLock.lock(); try { - writeLock.lock(); Preconditions.checkNotNull(allocsLoader, "allocsLoader is null"); if (continuousSchedulingEnabled) { Preconditions.checkNotNull(schedulingThread, @@ -1499,8 +1499,8 @@ public class FairScheduler extends @SuppressWarnings("deprecation") @Override public void serviceStop() throws Exception { + writeLock.lock(); try { - writeLock.lock(); if (continuousSchedulingEnabled) { if (schedulingThread != null) { schedulingThread.interrupt(); @@ -1562,8 +1562,8 @@ public class FairScheduler extends @Override public boolean checkAccess(UserGroupInformation callerUGI, QueueACL acl, String queueName) { + readLock.lock(); try { - readLock.lock(); FSQueue queue = getQueueManager().getQueue(queueName); if (queue == null) { if (LOG.isDebugEnabled()) { @@ -1691,8 +1691,8 @@ public class FairScheduler extends @Override public String moveApplication(ApplicationId appId, String queueName) throws YarnException { + writeLock.lock(); try { - writeLock.lock(); SchedulerApplication<FSAppAttempt> app = applications.get(appId); if (app == null) { throw new YarnException("App to be moved " + appId + " not found."); @@ -1700,8 +1700,8 @@ public class FairScheduler extends FSAppAttempt attempt = (FSAppAttempt) app.getCurrentAppAttempt(); // To serialize with FairScheduler#allocate, synchronize on app attempt + attempt.getWriteLock().lock(); try { - attempt.getWriteLock().lock(); FSLeafQueue oldQueue = (FSLeafQueue) app.getQueue(); // Check if the attempt is already stopped: don't move stopped app // attempt. The attempt has already been removed from all queues. @@ -1737,8 +1737,8 @@ public class FairScheduler extends @Override public void preValidateMoveApplication(ApplicationId appId, String newQueue) throws YarnException { + writeLock.lock(); try { - writeLock.lock(); SchedulerApplication<FSAppAttempt> app = applications.get(appId); if (app == null) { throw new YarnException("App to be moved " + appId + " not found."); @@ -1747,8 +1747,8 @@ public class FairScheduler extends FSAppAttempt attempt = app.getCurrentAppAttempt(); // To serialize with FairScheduler#allocate, synchronize on app attempt + attempt.getWriteLock().lock(); try { - attempt.getWriteLock().lock(); FSLeafQueue oldQueue = (FSLeafQueue) app.getQueue(); String destQueueName = handleMoveToPlanQueue(newQueue); FSLeafQueue targetQueue = queueMgr.getLeafQueue(destQueueName, false); @@ -1869,8 +1869,8 @@ public class FairScheduler extends @Override public void updateNodeResource(RMNode nm, ResourceOption resourceOption) { + writeLock.lock(); try { - writeLock.lock(); super.updateNodeResource(nm, resourceOption); updateRootQueueMetrics(); queueMgr.getRootQueue().setSteadyFairShare(getClusterResource()); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org