diff --git a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java index b4d4a809bb6..a8d2aa6584b 100644 --- a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java +++ b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/SLSRunner.java @@ -159,6 +159,10 @@ private TraceType inputType; private SynthTraceJobProducer stjp; + public static int getRemainingApps() { + return remainingApps; + } + public SLSRunner() throws ClassNotFoundException { Configuration tempConf = new Configuration(false); init(tempConf); @@ -933,12 +937,12 @@ private void printSimulationInfo() { public static void decreaseRemainingApps() { remainingApps--; + } - if (remainingApps == 0) { - LOG.info("SLSRunner tears down."); - if (exitAtTheFinish) { - System.exit(0); - } + public static void exitSLSRunner() { + LOG.info("SLSRunner tears down."); + if (exitAtTheFinish) { + System.exit(0); } } diff --git a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSCapacityScheduler.java b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSCapacityScheduler.java index 9b2239043fc..b4ca1d9122e 100644 --- a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSCapacityScheduler.java +++ b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSCapacityScheduler.java @@ -218,6 +218,14 @@ public void handle(SchedulerEvent schedulerEvent) { AppAttemptRemovedSchedulerEvent appRemoveEvent = (AppAttemptRemovedSchedulerEvent) schedulerEvent; appQueueMap.remove(appRemoveEvent.getApplicationAttemptID()); + if (SLSRunner.getRemainingApps() == 0) { + try { + getSchedulerMetrics().tearDown(); + SLSRunner.exitSLSRunner(); + } catch (Exception e) { + e.printStackTrace(); + } + } } else if (schedulerEvent.getType() == SchedulerEventType.APP_ATTEMPT_ADDED && schedulerEvent instanceof AppAttemptAddedSchedulerEvent) { diff --git a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSFairScheduler.java b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSFairScheduler.java index 317c05e2eb2..ad2c50eb1c4 100644 --- a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSFairScheduler.java +++ b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/scheduler/SLSFairScheduler.java @@ -182,6 +182,14 @@ public void handle(SchedulerEvent schedulerEvent) { if (schedulerEvent.getType() == SchedulerEventType.APP_ATTEMPT_REMOVED && schedulerEvent instanceof AppAttemptRemovedSchedulerEvent) { SLSRunner.decreaseRemainingApps(); + if (SLSRunner.getRemainingApps() == 0) { + try { + getSchedulerMetrics().tearDown(); + SLSRunner.exitSLSRunner(); + } catch (Exception e) { + e.printStackTrace(); + } + } } } }