[
https://issues.apache.org/jira/browse/GEODE-7245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kamilla Aslami reassigned GEODE-7245:
-------------------------------------
Assignee: Kamilla Aslami
> 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
>
> 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)