Repository: hadoop Updated Branches: refs/heads/branch-2.7 86c01d90b -> 6b1a156e2
YARN-3842. NMProxy should retry on NMNotYetReadyException. (Robert Kanter via kasha) (cherry picked from commit 5ebf2817e58e1be8214dc1916a694a912075aa0a) (cherry picked from commit 9656ee4ee763dc48435ba8bb3ac9b10f6b306fe3) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6b1a156e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6b1a156e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6b1a156e Branch: refs/heads/branch-2.7 Commit: 6b1a156e276a856c124a7738682f1724524fce16 Parents: 86c01d9 Author: Karthik Kambatla <ka...@apache.org> Authored: Mon Jun 22 17:45:41 2015 -0700 Committer: Karthik Kambatla <ka...@apache.org> Committed: Mon Jun 22 17:49:55 2015 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 +++ .../apache/hadoop/yarn/client/ServerProxy.java | 2 ++ .../containermanager/TestNMProxy.java | 20 +++++++++++++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b1a156e/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 9b53737..1c6345e 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -160,6 +160,9 @@ Release 2.7.1 - UNRELEASED YARN-3804. Both RM are on standBy state when kerberos user not in yarn.admin.acl (Varun Saxena via xgong) + YARN-3842. NMProxy should retry on NMNotYetReadyException. + (Robert Kanter via kasha) + Release 2.7.0 - 2015-04-20 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b1a156e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/ServerProxy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/ServerProxy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/ServerProxy.java index 6024560..e9bcf8d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/ServerProxy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/ServerProxy.java @@ -38,6 +38,7 @@ import org.apache.hadoop.io.retry.RetryProxy; import org.apache.hadoop.ipc.RetriableException; import org.apache.hadoop.net.ConnectTimeoutException; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.yarn.exceptions.NMNotYetReadyException; import org.apache.hadoop.yarn.ipc.YarnRPC; import com.google.common.base.Preconditions; @@ -74,6 +75,7 @@ public class ServerProxy { exceptionToPolicyMap.put(UnknownHostException.class, retryPolicy); exceptionToPolicyMap.put(RetriableException.class, retryPolicy); exceptionToPolicyMap.put(SocketException.class, retryPolicy); + exceptionToPolicyMap.put(NMNotYetReadyException.class, retryPolicy); return RetryPolicies.retryByException(RetryPolicies.TRY_ONCE_THEN_FAIL, exceptionToPolicyMap); http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b1a156e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestNMProxy.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestNMProxy.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestNMProxy.java index 67f540c..0b372be 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestNMProxy.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestNMProxy.java @@ -54,6 +54,7 @@ public class TestNMProxy extends BaseContainerManagerTest { } int retryCount = 0; + boolean shouldThrowNMNotYetReadyException = false; @Before public void setUp() throws Exception { @@ -72,7 +73,15 @@ public class TestNMProxy extends BaseContainerManagerTest { StartContainersRequest requests) throws YarnException, IOException { if (retryCount < 5) { retryCount++; - throw new java.net.ConnectException("start container exception"); + if (shouldThrowNMNotYetReadyException) { + // This causes super to throw an NMNotYetReadyException + containerManager.setBlockNewContainerRequests(true); + } else { + throw new java.net.ConnectException("start container exception"); + } + } else { + // This stops super from throwing an NMNotYetReadyException + containerManager.setBlockNewContainerRequests(false); } return super.startContainers(requests); } @@ -126,16 +135,25 @@ public class TestNMProxy extends BaseContainerManagerTest { NMProxy.createNMProxy(conf, ContainerManagementProtocol.class, ugi, YarnRPC.create(conf), address); + retryCount = 0; + shouldThrowNMNotYetReadyException = false; proxy.startContainers(allRequests); Assert.assertEquals(5, retryCount); retryCount = 0; + shouldThrowNMNotYetReadyException = false; proxy.stopContainers(Records.newRecord(StopContainersRequest.class)); Assert.assertEquals(5, retryCount); retryCount = 0; + shouldThrowNMNotYetReadyException = false; proxy.getContainerStatuses(Records .newRecord(GetContainerStatusesRequest.class)); Assert.assertEquals(5, retryCount); + + retryCount = 0; + shouldThrowNMNotYetReadyException = true; + proxy.startContainers(allRequests); + Assert.assertEquals(5, retryCount); } }