zhihai xu created YARN-3655:

             Summary: FairScheduler: potential deadlock due to maxAMShare 
limitation and container reservation 
                 Key: YARN-3655
                 URL: https://issues.apache.org/jira/browse/YARN-3655
             Project: Hadoop YARN
          Issue Type: Bug
          Components: fairscheduler
    Affects Versions: 2.7.0
            Reporter: zhihai xu
            Assignee: zhihai xu

FairScheduler: potential deadlock due to maxAMShare limitation and container 
If a node is reserved by an application, all the other applications don't have 
any chance to assign a new container on this node, unless the application which 
reserves the node assigns a new container on this node or releases the reserved 
container on this node.
The problem is if an application tries to call assignReservedContainer and fail 
to get a new container due to maxAMShare limitation, it will block all other 
applications to use the nodes it reserves. If all other running applications 
can't release their AM containers due to being blocked by these reserved 
containers. A dead lock situation can happen.
The following is the code at FSAppAttempt#assignContainer which can cause this 
potential dead lock.
    // Check the AM resource usage for the leaf queue
    if (!isAmRunning() && !getUnmanagedAM()) {
      List<ResourceRequest> ask = appSchedulingInfo.getAllResourceRequests();
      if (ask.isEmpty() || !getQueue().canRunAppAM(
          ask.get(0).getCapability())) {
        if (LOG.isDebugEnabled()) {
          LOG.debug("Skipping allocation because maxAMShare limit would " +
              "be exceeded");
        return Resources.none();
To fix this issue, we can unreserve the node if we can't allocate the AM 
container on the node due to Max AM share limitation and the node is reserved 
by the application.

This message was sent by Atlassian JIRA

Reply via email to