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

sandflee commented on YARN-3546:
--------------------------------

[~jianhe],  thanks for your explanation, I stil have one doubt,

waitForSchedulerAppAttemptAdded(ApplicationAttemptId attemptId) in MockRM maybe 
expect to waiting RMAppAttempt with attemptId to be SCHEDULED, actually It'll 
be true after first appAttempt is SCHEDULED. It'll cause launch AM failed 
before YARN-3533. maybe waitForSchedulerAppAttemptAdded should be corrected as 
below:

  int tick = 0;
    // Wait for at most 5 sec
    SchedulerApplicationAttempt attempt =
        
((AbstractYarnScheduler)rm.getResourceScheduler()).getApplicationAttempt(attemptId);
    while (null == attempt && 
attempt.getApplicationAttemptId().equals(attemptId) == false
         && tick < 50) {
      Thread.sleep(100);
      if (tick % 10 == 0) {
        System.out.println("waiting for SchedulerApplicationAttempt="
            + attemptId + " added.");
      }
      tick++;
      attempt =
          
((AbstractYarnScheduler)rm.getResourceScheduler()).getApplicationAttempt(attemptId);
    }

so why waitForSchedulerAppAttemptAdded is not done as expected, I thought the 
deep reason is getApplicationAttempt(attemptId) is misleading, Especially for 
the scheduler newbies , we may expect it to return corresponding sheduler app 
attempt with attemptId.

That's the reason why I suggest to rename it,  please correct me if anything 
wrong, thanks.


> AbstractYarnScheduler.getApplicationAttempt seems misleading,  and there're 
> some misuse of it
> ---------------------------------------------------------------------------------------------
>
>                 Key: YARN-3546
>                 URL: https://issues.apache.org/jira/browse/YARN-3546
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: resourcemanager
>            Reporter: sandflee
>
> I'm not familiar with scheduler,  with first eyes, I thought this func 
> returns the schdulerAppAttempt info corresponding to appAttemptId, but 
> actually it returns the current schdulerAppAttempt.
> It seems misled others too, such as
> TestWorkPreservingRMRestart.waitForNumContainersToRecover
> MockRM.waitForSchedulerAppAttemptAdded
> should I rename it to T getCurrentSchedulerApplicationAttempt(ApplicationId 
> applicationid)
> or returns null  if current attempt id not equals to the request attempt id ?
> comment preferred!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to