diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java index c19aa51..d2d3d44 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/AllocationFileLoaderService.java @@ -187,8 +187,8 @@ public File getAllocationFile(Configuration conf) { } return allocFile; } - - public synchronized void setReloadListener(Listener reloadListener) { + + public void setReloadListener(Listener reloadListener) { this.reloadListener = reloadListener; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSSchedulerNode.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSSchedulerNode.java index be08dff..969bea7 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSSchedulerNode.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSSchedulerNode.java @@ -76,7 +76,9 @@ public synchronized void reserveResource( " on node " + this + " for application " + application); } setReservedContainer(container); - this.reservedAppSchedulable = (FSAppAttempt) application; + if(application instanceof FSAppAttempt){ + this.reservedAppSchedulable = (FSAppAttempt) application; + } } @Override diff --git 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 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 2b59716..60a20a9 100644 --- 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 +++ 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 @@ -261,7 +261,9 @@ public void run() { update(); preemptTasksIfNecessary(); long duration = getClock().getTime() - start; + synchronized (fsOpDurations) { fsOpDurations.addUpdateThreadRunDuration(duration); + } } catch (InterruptedException ie) { LOG.warn("Update thread interrupted. Exiting."); return; @@ -1013,7 +1015,9 @@ void continuousSchedulingAttempt() throws InterruptedException { } long duration = getClock().getTime() - start; + synchronized (fsOpDurations){ fsOpDurations.addContinuousSchedulingRunDuration(duration); + } } /** Sort nodes by available resource */ @@ -1461,8 +1465,8 @@ public synchronized boolean checkAccess(UserGroupInformation callerUGI, } return queue.hasAccess(acl, callerUGI); } - - public AllocationConfiguration getAllocationConfiguration() { + + public synchronized AllocationConfiguration getAllocationConfiguration() { return allocConf; } @@ -1634,7 +1638,11 @@ public synchronized void updateNodeResource(RMNode nm, Set planQueues = new HashSet(); for (FSQueue fsQueue : queueMgr.getQueues()) { String queueName = fsQueue.getName(); - if (allocConf.isReservable(queueName)) { + boolean isReservable = false; + synchronized(this){ + isReservable = allocConf.isReservable(queueName); + } + if (isReservable) { planQueues.add(queueName); } }