Bug 42720 - A large amount of No destination message
Summary: A large amount of No destination message
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 6
Classification: Unclassified
Component: Catalina (show other bugs)
Version: unspecified
Hardware: All All
: P3 minor (vote)
Target Milestone: default
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-06-22 01:22 UTC by Keiichi Fujino
Modified: 2007-08-07 08:47 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Keiichi Fujino 2007-06-22 01:22:44 UTC
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.
Comment 1 Peter Rossbach 2007-08-01 07:28:58 UTC
I have test the patch for tomcat 5.5 and it works fine.
Filip can we also patch the 6.0 code base?

Peter
Comment 2 Filip Hanik 2007-08-07 08:47:01 UTC
Fixed globally in SimpleTcpCluster.send
Fixed in both 6.0.x and trunk