diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java index 230bbeb..c683da1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/attempt/RMAppAttemptImpl.java @@ -1262,6 +1262,14 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable { // Not preemption, hardware failures or NM resync. // Not last-attempt too - keep containers. keepContainersAcrossAppAttempts = true; + } else { + // After AM reset window time, it is no longer the last attempt. + long attemptFailuresValidityInterval = appAttempt.submissionContext.getAttemptFailuresValidityInterval(); + long end = System.currentTimeMillis(); + if (attemptFailuresValidityInterval > 0 + && appAttempt.getStartTime() < (end - attemptFailuresValidityInterval)) { + keepContainersAcrossAppAttempts = true; + } } } appEvent =