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>