You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Bill Burcham (Jira)" <ji...@apache.org> on 2020/09/01 17:38:00 UTC

[jira] [Updated] (GEODE-8477) getMembersNotShuttingDown() doesn't use consistent set of shutdown members

     [ https://issues.apache.org/jira/browse/GEODE-8477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bill Burcham updated GEODE-8477:
--------------------------------
    Description: 
{{GMSMembership.getMembersNotShuttingDown()}} correctly accesses {{latestView}} under the protection of the read lock {{latestViewReadLock}} associated with the read-write lock {{latestViewLock}} ✓

However that method also accesses the {{shutdownMembers}} collection, a {{(Bounded)LinkedHashMap}}. That class does not provide concurrency protection. Furthermore {{shutdownMembers}} is not read/written under the protection of {{latestViewLock}} ✕

The result is that in this method, {{shutdownMembers}} may be corrupt and its contents may be arbitrarily stale.

One solution is to put all reads and writes of {{shutdownMembers}} under the protection of the same read-write lock as {{latestView}}. If we do this we can eliminate existing synchronization on {{shutdownMembers}}.

  was:
{{GMSMembership.getMembersNotShuttingDown()}} correctly accesses {{latestView}} under the protection of the read lock {{latestViewReadLock}} associated with the read-write lock {{latestViewLock}} ✓

However that method also accesses the {{shutdownMembers}} collection, a {{(Bounded)LinkedHashMap}}. That class does not provide concurrency protection. Furthermore {{shutdownMembers}} is not read/written under the protection of {{latestViewLock}} ✕

The result is that in this method, {{shutdownMembers}} may be corrupt and its contents may be arbitrarily stale.

One solution is to put all reads and writes of {{shutdownMembers}} under the protection of the same read-write lock as {{latestView}}


> getMembersNotShuttingDown() doesn't use consistent set of shutdown members
> --------------------------------------------------------------------------
>
>                 Key: GEODE-8477
>                 URL: https://issues.apache.org/jira/browse/GEODE-8477
>             Project: Geode
>          Issue Type: Bug
>          Components: membership
>    Affects Versions: 1.12.0, 1.13.0, 1.14.0
>            Reporter: Bill Burcham
>            Priority: Major
>
> {{GMSMembership.getMembersNotShuttingDown()}} correctly accesses {{latestView}} under the protection of the read lock {{latestViewReadLock}} associated with the read-write lock {{latestViewLock}} ✓
> However that method also accesses the {{shutdownMembers}} collection, a {{(Bounded)LinkedHashMap}}. That class does not provide concurrency protection. Furthermore {{shutdownMembers}} is not read/written under the protection of {{latestViewLock}} ✕
> The result is that in this method, {{shutdownMembers}} may be corrupt and its contents may be arbitrarily stale.
> One solution is to put all reads and writes of {{shutdownMembers}} under the protection of the same read-write lock as {{latestView}}. If we do this we can eliminate existing synchronization on {{shutdownMembers}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)