From 38145df2d7a601afd82a3ec8fac04db29ef5d465 Mon Sep 17 00:00:00 2001 From: Szilard Nemeth Date: Tue, 22 Dec 2020 16:05:02 +0100 Subject: [PATCH 2/2] YARN-10427: Prevent second call of AMSimulator#lastStep --- .../hadoop/yarn/sls/appmaster/AMSimulator.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/appmaster/AMSimulator.java b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/appmaster/AMSimulator.java index 05d811fb1a5..e7f8008a03d 100644 --- a/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/appmaster/AMSimulator.java +++ b/hadoop-tools/hadoop-sls/src/main/java/org/apache/hadoop/yarn/sls/appmaster/AMSimulator.java @@ -99,7 +99,7 @@ protected long traceStartTimeMS; protected long traceFinishTimeMS; protected long simulateStartTimeMS; - protected long simulateFinishTimeMS; + protected long simulateFinishTimeMS = 0; // whether tracked in Metrics protected boolean isTracked; // progress @@ -221,6 +221,16 @@ public void middleStep() throws Exception { @Override public void lastStep() throws Exception { + if (simulateFinishTimeMS != 0) { + // The finish time is already recorded. + // Different value from zero means lastStep was called before. + // We want to prevent lastStep to be called more than once. + // See YARN-10427 for more details. + LOG.warn("Method AMSimulator#lastStep was already called. " + + "Skipping execution of method for application: {}", appId); + return; + } + LOG.info(String.format("Application %s is shutting down. lastStep " + "Stacktrace", appId), new Exception()); // unregister tracking -- 2.20.1 (Apple Git-117)