This is an automated email from the ASF dual-hosted git repository.

markt-asf pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new b860eba2c1 Review "Hand out a copy of the static members list"
b860eba2c1 is described below

commit b860eba2c1e58946778696844217e5af415e8e2e
Author: Mark Thomas <[email protected]>
AuthorDate: Thu Oct 22 19:36:18 2026 +0100

    Review "Hand out a copy of the static members list"
    
    Fix additional concurrency issues with the members list
    This includes a small API change but it is with the APi considered
    internal to Tomcat
    
    Co-authored by: Claude / Sonnet 5.5
---
 .../catalina/tribes/membership/StaticMembershipProvider.java       | 4 ++--
 .../apache/catalina/tribes/membership/StaticMembershipService.java | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git 
a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java 
b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
index aa0d891867..06952e926a 100644
--- a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
@@ -73,7 +73,7 @@ public class StaticMembershipProvider extends 
MembershipProviderBase
     /**
      * List of static members for this cluster.
      */
-    protected ArrayList<StaticMember> staticMembers;
+    protected List<StaticMember> staticMembers;
     /**
      * Send options flag for channel messages.
      */
@@ -430,7 +430,7 @@ public class StaticMembershipProvider extends 
MembershipProviderBase
      * Sets the static members for this cluster.
      * @param staticMembers the list of static members
      */
-    public void setStaticMembers(ArrayList<StaticMember> staticMembers) {
+    public void setStaticMembers(List<StaticMember> staticMembers) {
         this.staticMembers = staticMembers;
     }
 
diff --git 
a/java/org/apache/catalina/tribes/membership/StaticMembershipService.java 
b/java/org/apache/catalina/tribes/membership/StaticMembershipService.java
index 2d4f8c399e..58cc9d0f18 100644
--- a/java/org/apache/catalina/tribes/membership/StaticMembershipService.java
+++ b/java/org/apache/catalina/tribes/membership/StaticMembershipService.java
@@ -20,7 +20,9 @@ import java.io.IOException;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Properties;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.management.ObjectName;
 
@@ -45,7 +47,7 @@ public class StaticMembershipService extends 
MembershipServiceBase implements St
     /**
      * List of static members configured for this service.
      */
-    protected final ArrayList<StaticMember> staticMembers = new ArrayList<>();
+    protected final List<StaticMember> staticMembers = new 
CopyOnWriteArrayList<>();
     private StaticMember localMember;
     private StaticMembershipProvider provider;
 
@@ -165,7 +167,8 @@ public class StaticMembershipService extends 
MembershipServiceBase implements St
 
     /**
      * Returns a copy of the list of static members. Mutating the returned 
list has no effect on
-     * this service. The provider uses the configured list directly while it 
runs.
+     * this service. The configured list is safe to modify while the provider 
runs, so use
+     * {@link #addStaticMember(StaticMember)} and {@link 
#removeStaticMember(StaticMember)} to change it.
      * @return a copy of the static members list
      */
     public ArrayList<StaticMember> getStaticMembers() {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to