I am trying to run the carts example (*/examples/jsp/sessions/carts.jsp*)
with two nodes, on ports 8090 and 8190. The nodes are working fine
individually. However, I am trying to create a cluster with static members
(without multicast), but I keep encountering the following error -

09-Jun-2023 22:17:21.193 SEVERE
[ContainerBackgroundProcessor[StandardEngine[Catalina]]]
org.apache.catalina.ha.tcp.SimpleTcpCluster.send Unable to send
message through cluster sender.
    org.apache.catalina.tribes.ChannelException: Send failed,
attempt:[1] max:[1]; Faulty members:tcp://localhost:8190;
        at 
org.apache.catalina.tribes.transport.nio.ParallelNioSender.doLoop(ParallelNioSender.java:217)
        at 
org.apache.catalina.tribes.transport.nio.ParallelNioSender.sendMessage(ParallelNioSender.java:78)
        at 
org.apache.catalina.tribes.transport.nio.PooledParallelSender.sendMessage(PooledParallelSender.java:51)
        at 
org.apache.catalina.tribes.transport.ReplicationTransmitter.sendMessage(ReplicationTransmitter.java:65)
        at 
org.apache.catalina.tribes.group.ChannelCoordinator.sendMessage(ChannelCoordinator.java:83)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:89)
        at 
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.sendMessage(MessageDispatchInterceptor.java:93)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:89)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:89)
        at 
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector.sendMessage(TcpFailureDetector.java:89)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:89)
        at 
org.apache.catalina.tribes.group.ChannelInterceptorBase.sendMessage(ChannelInterceptorBase.java:89)
        at 
org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:268)
        at 
org.apache.catalina.tribes.group.GroupChannel.send(GroupChannel.java:220)
        at 
org.apache.catalina.ha.tcp.SimpleTcpCluster.send(SimpleTcpCluster.java:710)
        at 
org.apache.catalina.ha.tcp.SimpleTcpCluster.send(SimpleTcpCluster.java:681)
        at 
org.apache.catalina.ha.session.DeltaManager.send(DeltaManager.java:495)
        at 
org.apache.catalina.ha.session.DeltaManager.sessionExpired(DeltaManager.java:1160)
        at 
org.apache.catalina.ha.session.DeltaSession.expire(DeltaSession.java:540)
        at 
org.apache.catalina.ha.session.DeltaSession.expire(DeltaSession.java:495)
        at 
org.apache.catalina.ha.session.DeltaSession.isValid(DeltaSession.java:457)
        at 
org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:617)
        at 
org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:600)
        at 
org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5315)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1331)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1335)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1335)
        at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1303)
        at java.lang.Thread.run(Thread.java:750)
    Caused by: java.io.IOException: Unable to receive an ack message.
EOF on socket channel has been reached.
        at 
org.apache.catalina.tribes.transport.nio.NioSender.read(NioSender.java:178)
        at 
org.apache.catalina.tribes.transport.nio.NioSender.process(NioSender.java:122)
        at 
org.apache.catalina.tribes.transport.nio.ParallelNioSender.doLoop(ParallelNioSender.java:163)
        ... 28 more

I am trying to do this to achieve non-sticky sessions. Please help me
identify the problem in my *server.xml*. I am using *tomcat 8.5* with the
default configuration, with the cluster settings added inside the <Engine>
tag. The *web.xml* for both tomcats already contains the <distributable/>
tag.

          <Cluster
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6" channelStartOptions="3">

              <Manager className="org.apache.catalina.ha.session.DeltaManager"
                expireSessionsOnShutdown="false"
                notifyListenersOnReplication="true"/>

                <Channel
className="org.apache.catalina.tribes.group.GroupChannel">

                    <Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"/>

                        <Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                            <Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
                        </Sender>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor"/>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
                        <Interceptor
className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">

                           <LocalMember
className="org.apache.catalina.tribes.membership.StaticMember"
                            domain="delta-static"
                            uniqueId="{2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1}"/>

                            <Member
className="org.apache.catalina.tribes.membership.StaticMember"
                                port="8090"
                                securePort="-1"
                                host="localhost"
                                domain="delta-static"

uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}"
                                />

                            </Interceptor>
                            <Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>

                        </Channel>
                        <Valve
className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
                        <Valve
className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

                        <ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
                    </Cluster>

Reply via email to