[ 
https://issues.apache.org/jira/browse/YARN-6025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15781057#comment-15781057
 ] 

Naganarasimha G R commented on YARN-6025:
-----------------------------------------

Ok in that case will consider only removing of synchronization for nodeUpdate 
and keep it specific to FIFO scheduler as part of this jira.

> Few issues in synchronization in CapacityScheduler & AbstractYarnScheduler
> --------------------------------------------------------------------------
>
>                 Key: YARN-6025
>                 URL: https://issues.apache.org/jira/browse/YARN-6025
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: capacity scheduler, scheduler
>            Reporter: Naganarasimha G R
>            Assignee: Naganarasimha G R
>         Attachments: YARN-6025.01.patch
>
>
> YARN-3139 does optimization on the locks by introducing 
> ReentrantReadWriteLock to remove synchronized but seems to have some issues.
> # CapacityScheduler
> #* nodeUpdate(RMNode) need not be synchronized, as its the only one to be in 
> the class
> #* setLastNodeUpdateTime in nodeUpdate needs to be updated with readLock ? 
> then getLastNodeUpdateTime is done without any lock and more over its 
> volatile.
> #* getUserGroupMappingPlacementRule need not be public as its held called 
> within and not used in test and further is called from initScheduler and 
> reinitialize where both are holding write locks so i presume getting read 
> locks are of no use.
> # AbstractYarnScheduler
> #* recoverContainersOnNode is synchronized as well as holds write lock on the 
> complete method so i presume we do not require synchronized here.
> #* nodeUpdate method too is synchronized but if i see the updates done inside 
> i do not see any place where node update from two different nodes will have 
> any issues (except for schedulerHealth which is taken care internally with 
> concurrentHashMap), And even if require we could better use write lock. (also 
> depends on the decision of next point)
> #* readLock is only used in containerLaunchedOnNode which i am not completely 
> sure whether its required to have a read lock here, suppose we do not require 
> then whether there is any use of read write locks in AbstractYarnScheduler as 
> in general there is performance overhead in using readwrite lock over 
> synchronized blocks on frequently accessed code path.



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

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

Reply via email to