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