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

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


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 8fe35657e8 No configuration change unless the channel is fully stopped.
8fe35657e8 is described below

commit 8fe35657e861854fd781ff13c56a3c00d5afd92b
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                                |  8 ++++++++
 3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/java/org/apache/catalina/tribes/group/ChannelCoordinator.java 
b/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
index 6d6f83f907..f0eaac8c7e 100644
--- a/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
+++ b/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
@@ -274,7 +274,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);
@@ -286,11 +289,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 68c47b7378..422fced1f4 100644
--- a/java/org/apache/catalina/tribes/group/LocalStrings.properties
+++ b/java/org/apache/catalina/tribes/group/LocalStrings.properties
@@ -18,6 +18,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 ef2262a7f2..5483ee13c4 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -139,6 +139,14 @@
       </add>
     </changelog>
   </subsection>
+  <subsection name="Cluster">
+    <changelog>
+      <fix>
+        Prevent the channel configuration (sender, receiver, membership 
service)
+        from being changed unless the channel is fully stopped. (markt)
+      </fix>
+    </changelog>
+  </subsection>
   <subsection name="Web applications">
     <changelog>
       <fix>


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

Reply via email to