You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-issues@hadoop.apache.org by "Zhijie Shen (JIRA)" <ji...@apache.org> on 2013/05/31 20:10:21 UTC

[jira] [Updated] (YARN-733) TestNMClient fails occasionally

     [ https://issues.apache.org/jira/browse/YARN-733?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Zhijie Shen updated YARN-733:
-----------------------------

    Attachment: YARN-733.1.patch

In the patch:
1. Update the tests to wait until the expected container status occur
2. In NMClientImpl, add a piece of javadoc to describe that startContainer/stopContainer returns doesn't mean container is actually started/stopped. There could be a transit container status.

Have run the test for tens of times, and no failure occurs.
                
> TestNMClient fails occasionally
> -------------------------------
>
>                 Key: YARN-733
>                 URL: https://issues.apache.org/jira/browse/YARN-733
>             Project: Hadoop YARN
>          Issue Type: Bug
>            Reporter: Zhijie Shen
>            Assignee: Zhijie Shen
>         Attachments: YARN-733.1.patch
>
>
> The problem happens at:
> {code}
>         // getContainerStatus can be called after stopContainer
>         try {
>           ContainerStatus status = nmClient.getContainerStatus(
>               container.getId(), container.getNodeId(),
>               container.getContainerToken());
>           assertEquals(container.getId(), status.getContainerId());
>           assertEquals(ContainerState.RUNNING, status.getState());
>           assertTrue("" + i, status.getDiagnostics().contains(
>               "Container killed by the ApplicationMaster."));
>           assertEquals(-1000, status.getExitStatus());
>         } catch (YarnRemoteException e) {
>           fail("Exception is not expected");
>         }
> {code}
> NMClientImpl#stopContainer returns, but container hasn't been stopped immediately. ContainerManangerImpl implements stopContainer in async style. Therefore, the container's status is in transition. NMClientImpl#getContainerStatus immediately after stopContainer will get either the RUNNING status or the COMPLETE one.
> There will be the similar problem wrt NMClientImpl#startContainer.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira