You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Kamilla Aslami (Jira)" <ji...@apache.org> on 2021/03/02 18:13:00 UTC
[jira] [Resolved] (GEODE-7245) Remove most uses of
latestViewReadLock in GMSMembershipManager
[ https://issues.apache.org/jira/browse/GEODE-7245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kamilla Aslami resolved GEODE-7245.
-----------------------------------
Fix Version/s: 1.15.0
Resolution: Fixed
> 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
> Assignee: Kamilla Aslami
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.15.0
>
>
> 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)