Browse Source

MAPREDUCE-6418. MRApp should not shutdown LogManager during shutdown. Contributed by Chang Li
(cherry picked from commit eac1d1894354e90d314087af8e7fb168ddef9a3d)

Jason Lowe 10 years ago
parent
commit
8a4970e845

+ 3 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -260,6 +260,9 @@ Release 2.8.0 - UNRELEASED
     MAPREDUCE-6420. Interrupted Exception in LocalContainerLauncher should be
     logged in warn/info level (Chang Li via jlowe)
 
+    MAPREDUCE-6418. MRApp should not shutdown LogManager during shutdown
+    (Chang Li via jlowe)
+
 Release 2.7.2 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 11 - 3
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/MRAppMaster.java

@@ -1178,11 +1178,15 @@ public class MRAppMaster extends CompositeService {
       startJobs();
     }
   }
-  
+
+  protected void shutdownTaskLog() {
+    TaskLog.syncLogsShutdown(logSyncer);
+  }
+
   @Override
   public void stop() {
     super.stop();
-    TaskLog.syncLogsShutdown(logSyncer);
+    shutdownTaskLog();
   }
 
   private boolean isRecoverySupported() throws IOException {
@@ -1686,10 +1690,14 @@ public class MRAppMaster extends CompositeService {
     T call(Configuration conf) throws Exception;
   }
 
+  protected void shutdownLogManager() {
+    LogManager.shutdown();
+  }
+
   @Override
   protected void serviceStop() throws Exception {
     super.serviceStop();
-    LogManager.shutdown();
+    shutdownLogManager();
   }
 
   public ClientService getClientService() {

+ 15 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/MRApp.java

@@ -802,5 +802,20 @@ public class MRApp extends MRAppMaster {
             new Text(containerToken.getService()));
     return token.decodeIdentifier();
   }
+
+  @Override
+  protected void shutdownTaskLog() {
+    // Avoid closing the logging system during unit tests,
+    // otherwise subsequent MRApp instances in the same test
+    // will fail to log anything.
+  }
+
+  @Override
+  protected void shutdownLogManager() {
+    // Avoid closing the logging system during unit tests,
+    // otherwise subsequent MRApp instances in the same test
+    // will fail to log anything.
+  }
+
 }