Jun Gong commented on YARN-3389:

[~jianhe] Thank you for the explanation. I thought RM's event dispatcher is 
multithread.  Closing it now.

> Avoid race conditions when attempts operate on shared states concurrently
> -------------------------------------------------------------------------
>                 Key: YARN-3389
>                 URL: https://issues.apache.org/jira/browse/YARN-3389
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: resourcemanager
>    Affects Versions: 2.6.0
>            Reporter: Jun Gong
>            Assignee: Jun Gong
>         Attachments: YARN-3389.01.patch
> In AttemptFailedTransition, new attempt will get 
> states('justFinishedContainers' and 'finishedContainersSentToAM') reference 
> from failed attempt. Then these attempts share the two states(previous 
> attempts also share the two states). Suppose two or more CONTAINER_FINISHED 
> events for different attempts are handled at the same time, and suppose they 
> ran on same node. Attempts will update justFinishedContainers's same key's 
> value concurrently. Although 'justFinishedContainers' is a ConcurrentHashMap, 
> operations on its value 'List<ContainerStatus>' is not atomic, namely  
> {code}appAttempt.justFinishedContainers.get(containerFinishedEvent.getNodeId()).add(containerFinishedEvent.getContainerStatus()){code}
>  is not atomic.

This message was sent by Atlassian JIRA

Reply via email to