This is an automated email from the ASF dual-hosted git repository.

shuzirra pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a967033  YARN-10427. Duplicate Job IDs in SLS output (#3809). 
Contributed by Szilard Nemeth
a967033 is described below

commit a967033a9f187625fcf4981581a0eaa29ac12cdf
Author: Szilard Nemeth <[email protected]>
AuthorDate: Fri Dec 17 00:34:16 2021 +0100

    YARN-10427. Duplicate Job IDs in SLS output (#3809). Contributed by Szilard 
Nemeth
---
 .../org/apache/hadoop/yarn/sls/appmaster/AMSimulator.java   | 13 ++++++++++++-
 1 file changed, 12 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 5315eaa..922f9a2 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
@@ -75,6 +75,7 @@ import org.slf4j.LoggerFactory;
 @Private
 @Unstable
 public abstract class AMSimulator extends TaskRunner.Task {
+  private static final long FINISH_TIME_NOT_INITIALIZED = Long.MIN_VALUE;
   // resource manager
   protected ResourceManager rm;
   // main
@@ -102,7 +103,7 @@ public abstract class AMSimulator extends TaskRunner.Task {
   protected long traceStartTimeMS;
   protected long traceFinishTimeMS;
   protected long simulateStartTimeMS;
-  protected long simulateFinishTimeMS;
+  protected long simulateFinishTimeMS = FINISH_TIME_NOT_INITIALIZED;
   // whether tracked in Metrics
   protected boolean isTracked;
   // progress
@@ -226,6 +227,16 @@ public abstract class AMSimulator extends TaskRunner.Task {
 
   @Override
   public void lastStep() throws Exception {
+    if (simulateFinishTimeMS != FINISH_TIME_NOT_INITIALIZED) {
+      // 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("Application {} is shutting down.", appId);
     // unregister tracking
     if (isTracked) {

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to