[ https://issues.apache.org/jira/browse/YARN-3136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14306748#comment-14306748 ]
Sunil G commented on YARN-3136: ------------------------------- Hi [~rohithsharma] *getLiveContainers()* is giving a copy as you mentioned. Earlier I was looking for getter method to fetch FicaSchedulerApp from *applications* with schedule lock. But that also not needed. {code} Map<ApplicationId, SchedulerApplication<T>> applications this.applications = new ConcurrentHashMap<ApplicationId, SchedulerApplication<FiCaSchedulerApp>>(); {code} *applications* is a concurrent hash map. Hence synchronized can be removed from *getTransferredContainers* without any change in the method itself. Also as mentioned by [~jianhe], a check will be added on *registerApplicationMaster()*. > getTransferredContainers can be a bottleneck during AM registration > ------------------------------------------------------------------- > > Key: YARN-3136 > URL: https://issues.apache.org/jira/browse/YARN-3136 > Project: Hadoop YARN > Issue Type: Sub-task > Components: scheduler > Affects Versions: 2.6.0 > Reporter: Jason Lowe > Assignee: Sunil G > > While examining RM stack traces on a busy cluster I noticed a pattern of AMs > stuck waiting for the scheduler lock trying to call getTransferredContainers. > The scheduler lock is highly contended, especially on a large cluster with > many nodes heartbeating, and it would be nice if we could find a way to > eliminate the need to grab this lock during this call. We've already done > similar work during AM allocate calls to make sure they don't needlessly grab > the scheduler lock, and it would be good to do so here as well, if possible. -- This message was sent by Atlassian JIRA (v6.3.4#6332)