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: dev@tomcat.apache.org Reporter: carlosp...@gmail.com 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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org