You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Carlos Peon Costa <ca...@gmail.com> on 2017/08/18 07:51:32 UTC

Cluster StaticMember (McastService:Required property "tcpListenPort" is missing)

Hello,

Cluster static members seem to fail since version 7.0.70 (also
reproduced in 8.0.45):

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 -r 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
28a29,30
> import org.apache.catalina.tribes.membership.StaticMember;
> import org.apache.catalina.tribes.transport.ReceiverBase;
143a146,148
>                 if (clusterReceiver instanceof ReceiverBase) {
>                     ((ReceiverBase)clusterReceiver).setChannel(getChannel());
>                 }
146,149c151,165
<
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());
>
>                 }

but I can't see why and go forward alone ;). If I'm not wrong, posting
in this mailing list is the proper way to go.

Regards,
Carlos.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Cluster StaticMember (McastService:Required property "tcpListenPort" is missing)

Posted by Keiichi Fujino <kf...@apache.org>.
Hi

https://bz.apache.org/bugzilla/show_bug.cgi?id=61448#c2

2017-08-18 20:47 GMT+09:00 Carlos Peon Costa <ca...@gmail.com>:

> Hello,
>
> 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.
>
> On Fri, Aug 18, 2017 at 9:51 AM, Carlos Peon Costa <ca...@gmail.com>
> wrote:
> > The reason could be here:
> >
> > $ diff -r 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
> > 146,149c151,165
> > <         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());
> >>
> >>                 }
> >
>



-- 
Keiichi.Fujino

Re: Cluster StaticMember (McastService:Required property "tcpListenPort" is missing)

Posted by Carlos Peon Costa <ca...@gmail.com>.
Hello,

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.

On Fri, Aug 18, 2017 at 9:51 AM, Carlos Peon Costa <ca...@gmail.com> wrote:
> The reason could be here:
>
> $ diff -r 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
> 146,149c151,165
> <         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());
>>
>>                 }
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org