A large amount of following messages are output with Tomcat6.0.13. org.apache.catalina.tribes.ChannelException: No destination given; No faulty members identified. at org.apache.catalina.tribes.group.GroupChannel.send (GroupChannel.java:194) at org.apache.catalina.tribes.group.GroupChannel.send (GroupChannel.java:175) at org.apache.catalina.ha.tcp.SimpleTcpCluster.send (SimpleTcpCluster.java:835) at org.apache.catalina.ha.tcp.SimpleTcpCluster.sendClusterDomain (SimpleTcpCluster.java:814) at org.apache.catalina.ha.session.DeltaManager.send(DeltaManager.java:586) at org.apache.catalina.ha.session.DeltaManager.sessionExpired (DeltaManager.java:1211) at org.apache.catalina.ha.session.DeltaSession.expire (DeltaSession.java:366) at org.apache.catalina.ha.session.DeltaSession.expire (DeltaSession.java:352) at org.apache.catalina.ha.session.DeltaSession.isValid (DeltaSession.java:327) at org.apache.catalina.session.ManagerBase.processExpires (ManagerBase.java:682) at org.apache.catalina.session.ManagerBase.backgroundProcess (ManagerBase.java:667) at org.apache.catalina.core.ContainerBase.backgroundProcess (ContainerBase.java:1316) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChil dren(ContainerBase.java:1601) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChil dren(ContainerBase.java:1610) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChil dren(ContainerBase.java:1610) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run (ContainerBase.java:1590) The easiest reproduction procedure is as follows. 1: < Cluster > and <Manager className="org.apache.catalina.ha.session.DeltaManager"...> is set to server.xml. 2: Only one Tomcat is started. 3: The request that creates the session is sent. (a lot) 4: The session does the timeout. (or session.invalidate()) 5: The error message is output per session timeout(or invalidate()). I think that DeltaManager should check the number of cluster members before transmitting the replication message in DeltaManager.sessionExpired. For instance, org.apache.catalina.ha.session.DeltaManager.sessionExpired is corrected as follows. protected void sessionExpired(String id) { if (cluster.getMembers().length > 0) { counterSend_EVT_SESSION_EXPIRED++; SessionMessage msg = new SessionMessageImpl(getName (),SessionMessage.EVT_SESSION_EXPIRED, null, id, id + "-EXPIRED-MSG"); if (log.isDebugEnabled()) log.debug(sm.getString ("deltaManager.createMessage.expire", getName(), id)); send(msg); } } This correction is done by the way similar to DeltaManager.sendCreateSession.
I have test the patch for tomcat 5.5 and it works fine. Filip can we also patch the 6.0 code base? Peter
Fixed globally in SimpleTcpCluster.send Fixed in both 6.0.x and trunk