You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-issues@hadoop.apache.org by "Ryan Wu (Jira)" <ji...@apache.org> on 2020/10/14 10:29:00 UTC

[jira] [Updated] (YARN-10459) containerLaunchedOnNode method not need to hold schedulerApptemt lock

     [ https://issues.apache.org/jira/browse/YARN-10459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ryan Wu updated YARN-10459:
---------------------------
    Description: 
 

Now, the containerLaunchedOnNode hold the SchedulerApplicationAttempt writelock, but looking at the method, it does not change any field. And more seriously, this will affect the scheduler.
{code:java}
// public void containerLaunchedOnNode(ContainerId containerId, NodeId nodeId) { // Inform the container writelock.lock try { RMContainer rmContainer = getRMContainer(containerId); if (rmContainer == null) { // Some unknown container sneaked into the system. Kill it. rmContext.getDispatcher().getEventHandler().handle( new RMNodeCleanContainerEvent(nodeId, containerId)); return; } rmContainer.handle( new RMContainerEvent(containerId, RMContainerEventType.LAUNCHED)); }finally { writeLock.unlock(); } }  
{code}
 

  was:
 

Now, the containerLaunchedOnNode hold the SchedulerApplicationAttempt writelock, but looking at the method, it does not change any field. And more seriously, this will affect the scheduler  

public void containerLaunchedOnNode(ContainerId containerId,
    NodeId nodeId) {
    // Inform the container
    writelock.lock
    try \{
    RMContainer rmContainer = getRMContainer(containerId);
    if (rmContainer == null) {
      // Some unknown container sneaked into the system. Kill it.
      rmContext.getDispatcher().getEventHandler().handle(
          new RMNodeCleanContainerEvent(nodeId, containerId));
      return;
    }

    rmContainer.handle(
        new RMContainerEvent(containerId, RMContainerEventType.LAUNCHED));

    }finally {      
     writeLock.unlock(); 
    }   
}

 


> containerLaunchedOnNode method not need to hold schedulerApptemt lock 
> ----------------------------------------------------------------------
>
>                 Key: YARN-10459
>                 URL: https://issues.apache.org/jira/browse/YARN-10459
>             Project: Hadoop YARN
>          Issue Type: Improvement
>    Affects Versions: 3.2.0, 3.1.3
>            Reporter: Ryan Wu
>            Priority: Major
>             Fix For: 3.2.1
>
>
>  
> Now, the containerLaunchedOnNode hold the SchedulerApplicationAttempt writelock, but looking at the method, it does not change any field. And more seriously, this will affect the scheduler.
> {code:java}
> // public void containerLaunchedOnNode(ContainerId containerId, NodeId nodeId) { // Inform the container writelock.lock try { RMContainer rmContainer = getRMContainer(containerId); if (rmContainer == null) { // Some unknown container sneaked into the system. Kill it. rmContext.getDispatcher().getEventHandler().handle( new RMNodeCleanContainerEvent(nodeId, containerId)); return; } rmContainer.handle( new RMContainerEvent(containerId, RMContainerEventType.LAUNCHED)); }finally { writeLock.unlock(); } }  
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: yarn-issues-help@hadoop.apache.org