Repository: hadoop Updated Branches: refs/heads/trunk a5def5808 -> 0305316d6
YARN-3646. Applications are getting stuck some times in case of retry policy forever. Contributed by Raju Bairishetti. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0305316d Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0305316d Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0305316d Branch: refs/heads/trunk Commit: 0305316d6932e6f1a05021354d77b6934e57e171 Parents: a5def58 Author: Devaraj K <deva...@apache.org> Authored: Thu May 21 20:14:44 2015 +0530 Committer: Devaraj K <deva...@apache.org> Committed: Thu May 21 20:14:44 2015 +0530 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 ++ .../yarn/client/api/impl/TestYarnClient.java | 32 ++++++++++++++++++++ .../org/apache/hadoop/yarn/client/RMProxy.java | 15 ++++----- 3 files changed, 43 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0305316d/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index d1d2258..e5a9ee9 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -538,6 +538,9 @@ Release 2.7.1 - UNRELEASED YARN-3694. Fix dead link for TimelineServer REST API. (Jagadesh Kiran N via aajisaka) + YARN-3646. Applications are getting stuck some times in case of retry + policy forever. (Raju Bairishetti via devaraj) + Release 2.7.0 - 2015-04-20 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/0305316d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestYarnClient.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestYarnClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestYarnClient.java index 511fa4a..bc40b9a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestYarnClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestYarnClient.java @@ -1265,4 +1265,36 @@ public class TestYarnClient { ReservationSystemTestUtil.reservationQ); return request; } + + @Test(timeout = 30000, expected = ApplicationNotFoundException.class) + public void testShouldNotRetryForeverForNonNetworkExceptions() throws Exception { + YarnConfiguration conf = new YarnConfiguration(); + conf.setInt(YarnConfiguration.RESOURCEMANAGER_CONNECT_MAX_WAIT_MS, -1); + + ResourceManager rm = null; + YarnClient yarnClient = null; + try { + // start rm + rm = new ResourceManager(); + rm.init(conf); + rm.start(); + + yarnClient = YarnClient.createYarnClient(); + yarnClient.init(conf); + yarnClient.start(); + + // create invalid application id + ApplicationId appId = ApplicationId.newInstance(1430126768L, 10645); + + // RM should throw ApplicationNotFoundException exception + yarnClient.getApplicationReport(appId); + } finally { + if (yarnClient != null) { + yarnClient.stop(); + } + if (rm != null) { + rm.stop(); + } + } + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/0305316d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java index fa8d642..28628f3 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/RMProxy.java @@ -224,19 +224,20 @@ public class RMProxy<T> { failoverSleepBaseMs, failoverSleepMaxMs); } - if (waitForEver) { - return RetryPolicies.RETRY_FOREVER; - } - if (rmConnectionRetryIntervalMS < 0) { throw new YarnRuntimeException("Invalid Configuration. " + YarnConfiguration.RESOURCEMANAGER_CONNECT_RETRY_INTERVAL_MS + " should not be negative."); } - RetryPolicy retryPolicy = - RetryPolicies.retryUpToMaximumTimeWithFixedSleep(rmConnectWaitMS, - rmConnectionRetryIntervalMS, TimeUnit.MILLISECONDS); + RetryPolicy retryPolicy = null; + if (waitForEver) { + retryPolicy = RetryPolicies.RETRY_FOREVER; + } else { + retryPolicy = + RetryPolicies.retryUpToMaximumTimeWithFixedSleep(rmConnectWaitMS, + rmConnectionRetryIntervalMS, TimeUnit.MILLISECONDS); + } Map<Class<? extends Exception>, RetryPolicy> exceptionToPolicyMap = new HashMap<Class<? extends Exception>, RetryPolicy>();