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]