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

markt 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 5b5e1453d6 No configuration change unless the channel is fully stopped.
5b5e1453d6 is described below

commit 5b5e1453d6c9c0c419dad1035e5e3f97f84f9449
Author: Mark Thomas <[email protected]>
AuthorDate: Tue Sep 16 11:01:54 2025 +0100

    No configuration change unless the channel is fully stopped.
---
 .../apache/catalina/tribes/group/ChannelCoordinator.java  | 15 ++++++++++++---
 .../apache/catalina/tribes/group/LocalStrings.properties  |  1 +
 webapps/docs/changelog.xml                                |  4 ++++
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/java/org/apache/catalina/tribes/group/ChannelCoordinator.java 
b/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
index 2970963658..2bd9361f13 100644
--- a/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
+++ b/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
@@ -273,7 +273,10 @@ public class ChannelCoordinator extends 
ChannelInterceptorBase implements Messag
         return membershipService;
     }
 
-    public void setClusterReceiver(ChannelReceiver clusterReceiver) {
+    public synchronized void setClusterReceiver(ChannelReceiver 
clusterReceiver) {
+        if (startLevel != 0) {
+            throw new 
IllegalStateException(sm.getString("channelCoordinator.invalidState.notStopped"));
+        }
         if (clusterReceiver != null) {
             this.clusterReceiver = clusterReceiver;
             this.clusterReceiver.setMessageListener(this);
@@ -285,11 +288,17 @@ public class ChannelCoordinator extends 
ChannelInterceptorBase implements Messag
         }
     }
 
-    public void setClusterSender(ChannelSender clusterSender) {
+    public synchronized void setClusterSender(ChannelSender clusterSender) {
+        if (startLevel != 0) {
+            throw new 
IllegalStateException(sm.getString("channelCoordinator.invalidState.notStopped"));
+        }
         this.clusterSender = clusterSender;
     }
 
-    public void setMembershipService(MembershipService membershipService) {
+    public synchronized void setMembershipService(MembershipService 
membershipService) {
+        if (startLevel != 0) {
+            throw new 
IllegalStateException(sm.getString("channelCoordinator.invalidState.notStopped"));
+        }
         this.membershipService = membershipService;
         this.membershipService.setMembershipListener(this);
     }
diff --git a/java/org/apache/catalina/tribes/group/LocalStrings.properties 
b/java/org/apache/catalina/tribes/group/LocalStrings.properties
index 6a7defbe3b..0f21a42e7f 100644
--- a/java/org/apache/catalina/tribes/group/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/group/LocalStrings.properties
@@ -15,6 +15,7 @@
 
 channelCoordinator.alreadyStarted=Channel already started for level:[{0}]
 channelCoordinator.invalid.startLevel=Invalid start level, valid levels 
are:SND_RX_SEQ,SND_TX_SEQ,MBR_TX_SEQ,MBR_RX_SEQ
+channelCoordinator.invalidState.notStopped=Configuration may not be changed 
until the channel has been fully stopped
 
 groupChannel.listener.alreadyExist=Listener already exists:[{0}][{1}]
 groupChannel.noDestination=No destination given
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 5600665bc8..591a26aa33 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -254,6 +254,10 @@
   <subsection name="Cluster">
     <changelog>
       <!-- Entries for backport and removal before 12.0.0-M1 below this line 
-->
+      <fix>
+        Prevent the channel configuration (sender, receiver, membership 
service)
+        from being changed unless the channel is fully stopped. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="WebSocket">


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

Reply via email to