https://bz.apache.org/bugzilla/show_bug.cgi?id=61448
Bug ID: 61448
Summary: Cluster StaticMember (McastService:Required property
"tcpListenPort" is missing)
Product: Tomcat 7
Version: 7.0.70
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: Cluster
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Hello,
Cluster static members seem to fail since version 7.0.70 (also
reproduced in 8.0.45, and is the same code than tomcat 9):
SEVERE: The required Server component failed to start so Tomcat is
unable to start.
...
Caused by: org.apache.catalina.tribes.ChannelException:
java.lang.IllegalArgumentException: McastService:Required property
"tcpListenPort" is missing.; No faulty members identified.
at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:200)
at
org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:100)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
at
org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor.start(StaticMembershipInterceptor.java:168)
at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:162)
at
org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:431)
at
org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:689)
... 15 more
Caused by: java.lang.IllegalArgumentException: McastService:Required
property "tcpListenPort" is missing.
at
org.apache.catalina.tribes.membership.McastService.hasProperty(McastService.java:360)
at
org.apache.catalina.tribes.membership.McastService.start(McastService.java:379)
at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:182)
... 21 more
The reason could be here:
$ diff -u
apache-tomcat-7.0.69-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
apache-tomcat-7.0.70-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java.original
---
apache-tomcat-7.0.69-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
2016-04-11 10:02:35.000000000 +0200
+++
apache-tomcat-7.0.70-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java.original
2016-06-15 18:45:51.000000000 +0200
@@ -26,6 +26,8 @@
import org.apache.catalina.tribes.MessageListener;
import org.apache.catalina.tribes.UniqueId;
import org.apache.catalina.tribes.membership.McastService;
+import org.apache.catalina.tribes.membership.StaticMember;
+import org.apache.catalina.tribes.transport.ReceiverBase;
import org.apache.catalina.tribes.transport.ReplicationTransmitter;
import org.apache.catalina.tribes.transport.SenderState;
import org.apache.catalina.tribes.transport.nio.NioReceiver;
@@ -141,28 +143,49 @@
//listens to with the local membership settings
if ( Channel.SND_RX_SEQ==(svc & Channel.SND_RX_SEQ) ) {
clusterReceiver.setMessageListener(this);
+ if (clusterReceiver instanceof ReceiverBase) {
+ ((ReceiverBase)clusterReceiver).setChannel(getChannel());
+ }
clusterReceiver.start();
//synchronize, big time FIXME
-
membershipService.setLocalMemberProperties(getClusterReceiver().getHost(),
-
getClusterReceiver().getPort(),
-
getClusterReceiver().getSecurePort(),
-
getClusterReceiver().getUdpPort());
+ Member localMember = getChannel().getLocalMember(false);
+ if (localMember instanceof StaticMember) {
+ // static member
+ StaticMember staticMember = (StaticMember)localMember;
+ staticMember.setHost(getClusterReceiver().getHost());
+ staticMember.setPort(getClusterReceiver().getPort());
+
staticMember.setSecurePort(getClusterReceiver().getSecurePort());
+ } else {
+ // multicast member
+
membershipService.setLocalMemberProperties(getClusterReceiver().getHost(),
+ getClusterReceiver().getPort(),
+ getClusterReceiver().getSecurePort(),
+ getClusterReceiver().getUdpPort());
+
+ }
valid = true;
}
It seems to me that it's always necessary to initialize
membershipService, maybe something like that (untested):
---
apache-tomcat-7.0.70-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java.original
2016-06-15 18:45:51.000000000 +0200
+++
apache-tomcat-7.0.70-src/java/org/apache/catalina/tribes/group/ChannelCoordinator.java
2017-08-18 13:19:53.342672900 +0200
@@ -148,6 +148,10 @@
}
clusterReceiver.start();
//synchronize, big time FIXME
+
membershipService.setLocalMemberProperties(getClusterReceiver().getHost(),
+
getClusterReceiver().getPort(),
+
getClusterReceiver().getSecurePort(),
+
getClusterReceiver().getUdpPort());
Member localMember = getChannel().getLocalMember(false);
if (localMember instanceof StaticMember) {
// static member
@@ -155,13 +159,6 @@
staticMember.setHost(getClusterReceiver().getHost());
staticMember.setPort(getClusterReceiver().getPort());
staticMember.setSecurePort(getClusterReceiver().getSecurePort());
- } else {
- // multicast member
-
membershipService.setLocalMemberProperties(getClusterReceiver().getHost(),
- getClusterReceiver().getPort(),
- getClusterReceiver().getSecurePort(),
- getClusterReceiver().getUdpPort());
-
}
valid = true;
}
Regards,
Carlos.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]