diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/loghandler/NonAggregatingLogHandler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/loghandler/NonAggregatingLogHandler.java index 06b654a..4ed61bc 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/loghandler/NonAggregatingLogHandler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/loghandler/NonAggregatingLogHandler.java @@ -118,10 +118,16 @@ public void handle(LogHandlerEvent event) { LOG.info("Scheduling Log Deletion for application: " + appFinishedEvent.getApplicationId() + ", with delay of " + this.deleteDelaySeconds + " seconds"); - sched.schedule( - new LogDeleterRunnable(appOwners.remove(appFinishedEvent - .getApplicationId()), appFinishedEvent.getApplicationId()), - this.deleteDelaySeconds, TimeUnit.SECONDS); + if (!sched.isShutdown()) { + sched.schedule( + new LogDeleterRunnable(appOwners.remove(appFinishedEvent + .getApplicationId()), appFinishedEvent.getApplicationId()), + this.deleteDelaySeconds, TimeUnit.SECONDS); + } else { + // Handling this event in local thread after sched.shutdownNow() is called. + new LogDeleterRunnable(appOwners.remove(appFinishedEvent + .getApplicationId()), appFinishedEvent.getApplicationId()).run(); + } break; default: ; // Ignore