Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 1D6B9200D45 for ; Thu, 9 Nov 2017 02:39:53 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 1BF17160C01; Thu, 9 Nov 2017 01:39:53 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 62EFB160BDA for ; Thu, 9 Nov 2017 02:39:52 +0100 (CET) Received: (qmail 39505 invoked by uid 500); 9 Nov 2017 01:39:51 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 39496 invoked by uid 99); 9 Nov 2017 01:39:51 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Nov 2017 01:39:51 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 64483DFCFA; Thu, 9 Nov 2017 01:39:51 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: templedf@apache.org To: common-commits@hadoop.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: hadoop git commit: YARN-7458. TestContainerManagerSecurity is still flakey (Contributed by Robert Kanter via Daniel Templeton) Date: Thu, 9 Nov 2017 01:39:51 +0000 (UTC) archived-at: Thu, 09 Nov 2017 01:39:53 -0000 Repository: hadoop Updated Branches: refs/heads/branch-3.0 d2b16e3e8 -> 9bcc9e3f4 YARN-7458. TestContainerManagerSecurity is still flakey (Contributed by Robert Kanter via Daniel Templeton) Change-Id: Ibb1975ad086c3a33f8af0b4f8b9a13c3cdca3f7d (cherry picked from commit 49b4c0b334e5472dbbf71b042a6a6b1d4b2ce3b7) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9bcc9e3f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9bcc9e3f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9bcc9e3f Branch: refs/heads/branch-3.0 Commit: 9bcc9e3f4dbf0349e1bc02a9fdd6b56174d0ddce Parents: d2b16e3 Author: Daniel Templeton Authored: Wed Nov 8 17:31:14 2017 -0800 Committer: Daniel Templeton Committed: Wed Nov 8 17:32:34 2017 -0800 ---------------------------------------------------------------------- .../server/TestContainerManagerSecurity.java | 38 ++++++++++++-------- 1 file changed, 24 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9bcc9e3f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java index 1cbad70..ad2f68a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java @@ -28,7 +28,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.TimeoutException; +import com.google.common.base.Supplier; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.io.DataInputBuffer; @@ -36,6 +38,7 @@ import org.apache.hadoop.minikdc.KerberosSecurityTestcase; import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.token.SecretManager.InvalidToken; +import org.apache.hadoop.test.GenericTestUtils; import org.apache.hadoop.yarn.api.ContainerManagementProtocol; import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesRequest; import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesResponse; @@ -49,6 +52,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerState; +import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Resource; @@ -404,27 +408,33 @@ public class TestContainerManagerSecurity extends KerberosSecurityTestcase { newContainerToken, attempt1NMToken, false).isEmpty()); } - private void waitForContainerToFinishOnNM(ContainerId containerId) { + private void waitForContainerToFinishOnNM(ContainerId containerId) + throws TimeoutException, InterruptedException { Context nmContext = yarnCluster.getNodeManager(0).getNMContext(); int interval = 4 * 60; // Max time for container token to expire. - Assert.assertNotNull(nmContext.getContainers().containsKey(containerId)); - - // Get the container first, as it may be removed from the Context - // by asynchronous calls. - // This was leading to a flakey test as otherwise the container could - // be removed and end up null. + // If the container is null, then it has already completed and been removed + // from the Context by asynchronous calls. Container waitContainer = nmContext.getContainers().get(containerId); - - while ((interval-- > 0) - && !waitContainer.cloneAndGetContainerStatus() - .getState().equals(ContainerState.COMPLETE)) { + if (waitContainer != null) { try { - LOG.info("Waiting for " + containerId + " to complete."); - Thread.sleep(1000); - } catch (InterruptedException e) { + LOG.info("Waiting for " + containerId + " to get to state " + + ContainerState.COMPLETE); + GenericTestUtils.waitFor(new Supplier() { + @Override + public Boolean get() { + return ContainerState.COMPLETE.equals( + waitContainer.cloneAndGetContainerStatus().getState()); + } + }, 10, interval); + } catch (TimeoutException te) { + fail("Was waiting for " + containerId + " to get to state " + + ContainerState.COMPLETE + " but was in state " + + waitContainer.cloneAndGetContainerStatus().getState() + + " after the timeout"); } } + // Normally, Containers will be removed from NM context after they are // explicitly acked by RM. Now, manually remove it for testing. yarnCluster.getNodeManager(0).getNodeStatusUpdater() --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org