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

Jian He commented on YARN-2209:
-------------------------------

{code}
try {
    ams.allocate(...);
  catch (Exception e) {
    ams.finishApplicationMaster(...)
  }
  if (response is shutdown/resync) {
    // cleanup and reboot ...
  }
{code}
The example you mentioned here will continue to work because 
ams.finishApplicationMaster won't be able to go through. Thus, AM container 
eventually gets killed and RM will still retry this application. 
So the main point is, regardless how application is earlier handling the 
AMCommand, it should continue to work with this change.  Existing YARN 
applications will not break because of this. 
In fact, I think AMCommand#shutdown itself is a nondeterministic command, 
because AM may possibly get killed before it can do anything to process this 
command . Application should not rely on this command.

> Replace AM resync/shutdown command with corresponding exceptions
> ----------------------------------------------------------------
>
>                 Key: YARN-2209
>                 URL: https://issues.apache.org/jira/browse/YARN-2209
>             Project: Hadoop YARN
>          Issue Type: Improvement
>            Reporter: Jian He
>            Assignee: Jian He
>         Attachments: YARN-2209.1.patch, YARN-2209.2.patch, YARN-2209.3.patch, 
> YARN-2209.4.patch, YARN-2209.5.patch
>
>
> YARN-1365 introduced an ApplicationMasterNotRegisteredException to indicate 
> application to re-register on RM restart. we should do the same for 
> AMS#allocate call also.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to