[ https://issues.apache.org/jira/browse/GEODE-7245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated GEODE-7245: ---------------------------------- Labels: pull-request-available (was: ) > Remove most uses of latestViewReadLock in GMSMembershipManager > -------------------------------------------------------------- > > Key: GEODE-7245 > URL: https://issues.apache.org/jira/browse/GEODE-7245 > Project: Geode > Issue Type: Improvement > Components: membership > Reporter: Bruce J Schuchardt > Priority: Major > Labels: pull-request-available > > Changes for GEODE-7196 made the latestView immutable so there is no reason, > in most cases, to use the latestViewReadlock when accessing the view. A > simple volatile read of the field & storing the value in a method variable > can replace most uses of the latestViewReadLock, especially those uses that > are in the path of sending or receiving messages. > Performance could be measured with our benchmarks to see if this change helps. > > latestViewReadLock is currently used in getCoordinator(), memberExists(), > getMembersNotShuttingDown(), getAllMembers(), isShunnedOrNew(), > isSurpriseMember(), doWithViewLocked(). > doWithViewLocked() is used to add membership listeners, and we don't want the > view to change until this operation completes. Therefore, we should keep the > lock in this method. > getCoordinator(), memberExists(), getMembersNotShuttingDown(), > getAllMembers() use latestViewReadLock to access latestView. In these methods > we can replace the lock with a volatile read of the latestView and storing > the value in a method variable. > isShunnedOrNew() accesses latestView, and 2 ConcurrentHashMaps - > shunnedMembers and surpriseMembers. Since the hashmaps are concurrent and > latestView is unmodifiable, a volatile read could replace the lock. Same for > isSurpriseMember(), which uses surpriseMembers hashmap. -- This message was sent by Atlassian Jira (v8.3.4#803005)