Rohith Sharma K S created YARN-3990:
---------------------------------------

             Summary: AsyncDispatcher may overloaded with RMAppNodeUpdateEvent 
when Node is connected 
                 Key: YARN-3990
                 URL: https://issues.apache.org/jira/browse/YARN-3990
             Project: Hadoop YARN
          Issue Type: Bug
          Components: resourcemanager
            Reporter: Rohith Sharma K S
            Priority: Critical


Whenever node is added or removed, NodeListManager sends RMAppNodeUpdateEvent 
to all the applications that are in the rmcontext. But for 
finished/killed/failed applications it is not required to send these events. 
Additional check for wheather app is finished/killed/failed would minimizes the 
unnecessary events

{code}
  public void handle(NodesListManagerEvent event) {
    RMNode eventNode = event.getNode();
    switch (event.getType()) {
    case NODE_UNUSABLE:
      LOG.debug(eventNode + " reported unusable");
      unusableRMNodesConcurrentSet.add(eventNode);
      for(RMApp app: rmContext.getRMApps().values()) {
        this.rmContext
            .getDispatcher()
            .getEventHandler()
            .handle(
                new RMAppNodeUpdateEvent(app.getApplicationId(), eventNode,
                    RMAppNodeUpdateType.NODE_UNUSABLE));
      }
      break;
    case NODE_USABLE:
      if (unusableRMNodesConcurrentSet.contains(eventNode)) {
        LOG.debug(eventNode + " reported usable");
        unusableRMNodesConcurrentSet.remove(eventNode);
      }
      for (RMApp app : rmContext.getRMApps().values()) {
        this.rmContext
            .getDispatcher()
            .getEventHandler()
            .handle(
                new RMAppNodeUpdateEvent(app.getApplicationId(), eventNode,
                    RMAppNodeUpdateType.NODE_USABLE));
      }
      break;
    default:
      LOG.error("Ignoring invalid eventtype " + event.getType());
    }
  }
{code}



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

Reply via email to