hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Abhishek Kapoor (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-369) Handle ( or throw a proper error when receiving) status updates from application masters that have not registered
Date Thu, 07 Mar 2013 05:46:13 GMT

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

Abhishek Kapoor commented on YARN-369:

Put a check on NPE
public boolean hasApplicationMaster(ApplicationAttemptId appAttemptId){
	boolean hasAM=false;
	    AMResponse lastResponse = responseMap.get(appAttemptId);
	    if (lastResponse !=null && lastResponse.getResponseId() >= 0) {
	return hasAM;

But the code is acutally failing because of the below mentioned flows at the moment.

Class: TestRMRestart.java

    AMResponse amResponse = am1.allocate(new ArrayList<ResourceRequest>(),
        new ArrayList<ContainerId>());

call flow structure :

am1.allocate -> MockAM#allocate -> amRMProtocol#allocate

where amRMProtocol is actually ApplicationMasterService class  (Note: holds a private final
map[responseMap] of <ApplicationAttemptId, AMResponse>)
above mentioned responseMap is used to find out the responseid from AMResponse.

As per the modification allocate function will now check for the repsonse id  >=0 .
and if registerApplicationMaster is not being called then responseId will not be increamented
and responseMap will not be updated.

MockAM does have registerAppAttempt() but since responseMap in ApplicationMasterService is
private final therefore it does not have access to it.

> Handle ( or throw a proper error when receiving) status updates from application masters
that have not registered
> -----------------------------------------------------------------------------------------------------------------
>                 Key: YARN-369
>                 URL: https://issues.apache.org/jira/browse/YARN-369
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: resourcemanager
>    Affects Versions: 2.0.3-alpha, trunk-win
>            Reporter: Hitesh Shah
>            Assignee: Abhishek Kapoor
>         Attachments: YARN-369.patch
> Currently, an allocate call from an unregistered application is allowed and the status
update for it throws a statemachine error that is silently dropped.
> org.apache.hadoop.yarn.state.InvalidStateTransitonException: Invalid event: STATUS_UPDATE
>        at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
>        at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:43)
>        at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:445)
>        at org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl.handle(RMAppAttemptImpl.java:588)
>        at org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl.handle(RMAppAttemptImpl.java:99)
>        at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager$ApplicationAttemptEventDispatcher.handle(ResourceManager.java:471)
>        at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager$ApplicationAttemptEventDispatcher.handle(ResourceManager.java:452)
>        at org.apache.hadoop.yarn.event.AsyncDispatcher.dispatch(AsyncDispatcher.java:130)
>        at org.apache.hadoop.yarn.event.AsyncDispatcher$1.run(AsyncDispatcher.java:77)
>        at java.lang.Thread.run(Thread.java:680)
> ApplicationMasterService should likely throw an appropriate error for applications' requests
that should not be handled in such cases.

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

View raw message