Browse Source

YARN-4398. Remove unnecessary synchronization in RMStateStore. Contributed by Ning Ding
(cherry picked from commit 6b9a5beb2b2f9589ef86670f2d763e8488ee5e90)

Jian He 9 years ago
parent
commit
42a2bddcb7

+ 2 - 0
hadoop-yarn-project/CHANGES.txt

@@ -37,6 +37,8 @@ Release 2.7.3 - UNRELEASED
     YARN-4380. TestResourceLocalizationService.testDownloadingResourcesOnContainerKill
     YARN-4380. TestResourceLocalizationService.testDownloadingResourcesOnContainerKill
     fails intermittently. (Varun Saxena via ozawa)
     fails intermittently. (Varun Saxena via ozawa)
 
 
+    YARN-4398. Remove unnecessary synchronization in RMStateStore. (Ning Ding via jianhe)
+
 Release 2.7.2 - UNRELEASED
 Release 2.7.2 - UNRELEASED
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 1 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/event/AsyncDispatcher.java

@@ -64,7 +64,7 @@ public class AsyncDispatcher extends AbstractService implements Dispatcher {
   // For drainEventsOnStop enabled only, block newly coming events into the
   // For drainEventsOnStop enabled only, block newly coming events into the
   // queue while stopping.
   // queue while stopping.
   private volatile boolean blockNewEvents = false;
   private volatile boolean blockNewEvents = false;
-  private EventHandler handlerInstance = null;
+  private final EventHandler handlerInstance = new GenericEventHandler();
 
 
   private Thread eventHandlingThread;
   private Thread eventHandlingThread;
   protected final Map<Class<? extends Enum>, EventHandler> eventDispatchers;
   protected final Map<Class<? extends Enum>, EventHandler> eventDispatchers;
@@ -224,9 +224,6 @@ public class AsyncDispatcher extends AbstractService implements Dispatcher {
 
 
   @Override
   @Override
   public EventHandler getEventHandler() {
   public EventHandler getEventHandler() {
-    if (handlerInstance == null) {
-      handlerInstance = new GenericEventHandler();
-    }
     return handlerInstance;
     return handlerInstance;
   }
   }
 
 

+ 5 - 5
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/RMStateStore.java

@@ -655,7 +655,7 @@ public abstract class RMStateStore extends AbstractService {
    * RMAppStoredEvent will be sent on completion to notify the RMApp
    * RMAppStoredEvent will be sent on completion to notify the RMApp
    */
    */
   @SuppressWarnings("unchecked")
   @SuppressWarnings("unchecked")
-  public synchronized void storeNewApplication(RMApp app) {
+  public void storeNewApplication(RMApp app) {
     ApplicationSubmissionContext context = app
     ApplicationSubmissionContext context = app
                                             .getApplicationSubmissionContext();
                                             .getApplicationSubmissionContext();
     assert context instanceof ApplicationSubmissionContextPBImpl;
     assert context instanceof ApplicationSubmissionContextPBImpl;
@@ -666,7 +666,7 @@ public abstract class RMStateStore extends AbstractService {
   }
   }
 
 
   @SuppressWarnings("unchecked")
   @SuppressWarnings("unchecked")
-  public synchronized void updateApplicationState(
+  public void updateApplicationState(
       ApplicationStateData appState) {
       ApplicationStateData appState) {
     dispatcher.getEventHandler().handle(new RMStateUpdateAppEvent(appState));
     dispatcher.getEventHandler().handle(new RMStateUpdateAppEvent(appState));
   }
   }
@@ -693,7 +693,7 @@ public abstract class RMStateStore extends AbstractService {
    * This does not block the dispatcher threads
    * This does not block the dispatcher threads
    * RMAppAttemptStoredEvent will be sent on completion to notify the RMAppAttempt
    * RMAppAttemptStoredEvent will be sent on completion to notify the RMAppAttempt
    */
    */
-  public synchronized void storeNewApplicationAttempt(RMAppAttempt appAttempt) {
+  public void storeNewApplicationAttempt(RMAppAttempt appAttempt) {
     Credentials credentials = getCredentialsFromAppAttempt(appAttempt);
     Credentials credentials = getCredentialsFromAppAttempt(appAttempt);
 
 
     AggregateAppResourceUsage resUsage =
     AggregateAppResourceUsage resUsage =
@@ -711,7 +711,7 @@ public abstract class RMStateStore extends AbstractService {
   }
   }
 
 
   @SuppressWarnings("unchecked")
   @SuppressWarnings("unchecked")
-  public synchronized void updateApplicationAttemptState(
+  public void updateApplicationAttemptState(
       ApplicationAttemptStateData attemptState) {
       ApplicationAttemptStateData attemptState) {
     dispatcher.getEventHandler().handle(
     dispatcher.getEventHandler().handle(
       new RMStateUpdateAppAttemptEvent(attemptState));
       new RMStateUpdateAppAttemptEvent(attemptState));
@@ -842,7 +842,7 @@ public abstract class RMStateStore extends AbstractService {
    * There is no notification of completion for this operation.
    * There is no notification of completion for this operation.
    */
    */
   @SuppressWarnings("unchecked")
   @SuppressWarnings("unchecked")
-  public synchronized void removeApplication(RMApp app) {
+  public void removeApplication(RMApp app) {
     ApplicationStateData appState =
     ApplicationStateData appState =
         ApplicationStateData.newInstance(
         ApplicationStateData.newInstance(
             app.getSubmitTime(), app.getStartTime(),
             app.getSubmitTime(), app.getStartTime(),