This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 722877ddac Fix syncs for mapMembers
722877ddac is described below
commit 722877ddacabb5086fea951004f905a58106f40b
Author: remm <[email protected]>
AuthorDate: Tue Sep 26 11:51:55 2023 +0200
Fix syncs for mapMembers
Found by coverity.
---
.../tribes/tipis/AbstractReplicatedMap.java | 32 ++++++++++++----------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
index 333f3ae6c8..47daef11ed 100644
--- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
+++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
@@ -389,7 +389,9 @@ public abstract class AbstractReplicatedMap<K,V>
}
this.rpcChannel = null;
this.channel = null;
- this.mapMembers.clear();
+ synchronized (mapMembers) {
+ this.mapMembers.clear();
+ }
innerMap.clear();
this.stateTransferred = false;
this.externalLoaders = null;
@@ -417,12 +419,12 @@ public abstract class AbstractReplicatedMap<K,V>
// GROUP COM INTERFACES
//------------------------------------------------------------------------------
public Member[] getMapMembers(HashMap<Member, Long> members) {
- synchronized (members) {
- return members.keySet().toArray(new Member[0]);
- }
+ return members.keySet().toArray(new Member[0]);
}
public Member[] getMapMembers() {
- return getMapMembers(this.mapMembers);
+ synchronized (mapMembers) {
+ return getMapMembers(mapMembers);
+ }
}
public Member[] getMapMembersExcl(Member[] exclude) {
@@ -970,16 +972,18 @@ public abstract class AbstractReplicatedMap<K,V>
}
public int getNextBackupIndex() {
- int size = mapMembers.size();
- if (mapMembers.size() == 0) {
- return -1;
- }
- int node = currentNode++;
- if (node >= size) {
- node = 0;
- currentNode = 1;
+ synchronized (mapMembers) {
+ int size = mapMembers.size();
+ if (mapMembers.size() == 0) {
+ return -1;
+ }
+ int node = currentNode++;
+ if (node >= size) {
+ node = 0;
+ currentNode = 1;
+ }
+ return node;
}
- return node;
}
public Member getNextBackupNode() {
Member[] members = getMapMembers();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]