[ 
https://issues.apache.org/jira/browse/HADOOP-14637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16080601#comment-16080601
 ] 

Jason Lowe commented on HADOOP-14637:
-------------------------------------

I think the precondition check really did catch a bug here.  From the 
TestRMRestart code:
{code}
    final int maxRetry = 10;
    final RMApp rmAppForCheck = rmApp;
    GenericTestUtils.waitFor(
        new Supplier<Boolean>() {
          @Override
          public Boolean get() {
            return new Boolean(rmAppForCheck.getAppAttempts().size() == 4);
          }
        },
        100, maxRetry);
    Assert.assertEquals(RMAppAttemptState.FAILED,
        rmApp.getAppAttempts().get(latestAppAttemptId).getAppAttemptState());
{code}

>From the variable names and values, I'm guessing the intent here was to check 
>every 100 milliseconds for 10 total checks (i.e.: a maximum cumulative wait 
>time of one second).  However this code is only going to check once, and if 
>that check fails it will sleep for 100 milliseconds then throw an exception.  
>That is clearly not intended by the caller, otherwise they would skip all this 
>boilerplate and just code up the check directly in their unit test.

Besides the bug in TestRMRestart, it would be useful for 
GenericTestUtils.waitFor to do one last check after the time expired before 
throwing the timeout exception.  At least that would do something semantically 
useful if we remove this precondition check and allow the wait interval to be 
less than the check interval.


> After HADOOP-14568, TestRMRestart.testRMRestartWaitForPreviousAMToFinish() 
> fails with IllegalArgumentException
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-14637
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14637
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 3.0.0-alpha4
>            Reporter: Daniel Templeton
>            Assignee: Daniel Templeton
>              Labels: newbie
>         Attachments: HADOOP-14637.001.patch, HADOOP-14637.002.patch
>
>
> {noformat}
> org.apache.hadoop.yarn.server.resourcemanager.TestRMRestart
> testRMRestartWaitForPreviousAMToFinish(org.apache.hadoop.yarn.server.resourcemanager.TestRMRestart)
>   Time elapsed: 23.718 sec  <<< ERROR!
> java.lang.IllegalArgumentException: Total wait time should be greater than 
> check interval time
>       at 
> com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
>       at 
> org.apache.hadoop.test.GenericTestUtils.waitFor(GenericTestUtils.java:341)
>       at 
> org.apache.hadoop.yarn.server.resourcemanager.TestRMRestart.testRMRestartWaitForPreviousAMToFinish(TestRMRestart.java:618)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to