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>