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

ASF subversion and git services commented on GEODE-7245:
--------------------------------------------------------

Commit ff947f1328f87ec8a8f4a914aea80f3d59eaef59 in geode's branch 
refs/heads/support/1.14 from Kamilla Aslami
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=ff947f1 ]

GEODE-7245: Remove most uses of latestViewReadLock in GMSMembership (#6037)

* Remove most uses of latestViewReadLock in GMSMembership
* make MembershipView immutable
* Constructor consolidation and better naming of add/remove
* Tighten constructor chaining

Co-authored-by: Bill Burcham <[email protected]>
(cherry picked from commit 477ffba8e155dca0bdeeefd312b6b32b4b481100)


> 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)

Reply via email to