[
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 consistently under the
protection of any synchronization ✕
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}} in
{{shutdownMessageReceived()}}.
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 consistently under the
protection of any synchronization ✕
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}}.
> 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 consistently
> under the protection of any synchronization ✕
> 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}} in
> {{shutdownMessageReceived()}}.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)