All, We've had Tomcat clustering working in test and production for months. We run on HP UX 11.11. We recently upgraded the OS and I think Tomcat clustering quit working at that point. I'm not sure of the OS connection but the session data is not being replicated throughout the cluster.
We are running Tomcat 5.0.28. Apparently clustering is failing at ReplicationTransmitter.sendMessageData() on a null sender. My question is what are the likely causes of the sender not being available? Is there a way to pickup additional logging that might indicate why the sender is not available? Are there any known Tomcat clustering bugs or problems related to HP UX 11.11 versions? How should I debug this problem? Some things I've tried: 1. Completely rebuilt the Tomcat environment in test and still got the same SEVERE error. 2. Changed all the multicast port and TCP port stuff and it still did not work. 3. Switched from using the org.apache.catalina.cluster.session.SimpleTcpReplicationManager to org.apache.catalina.cluster.session.DeltaManager but that didn't help either. Thanks, Jack Reference problem: Dec 16, 2006 12:52:22 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster send SEVERE: Unable to send message through cluster sender. java.io.IOException: Sender not available. Make sure sender information is available to the ReplicationTransmitter. at org.apache.catalina.cluster.tcp.ReplicationTransmitter.sendMessageData(R eplicationTransmitter.java:112) at org.apache.catalina.cluster.tcp.ReplicationTransmitter.sendMessage(Repli cationTransmitter.java:136) at org.apache.catalina.cluster.tcp.SimpleTcpCluster.send(SimpleTcpCluster.j ava:457) at org.apache.catalina.cluster.session.SimpleTcpReplicationManager.messageR eceived(SimpleTcpReplicationManager.java:539) at org.apache.catalina.cluster.session.SimpleTcpReplicationManager.messageD ataReceived(SimpleTcpReplicationManager.java:593) at org.apache.catalina.cluster.tcp.SimpleTcpCluster.messageDataReceived(Sim pleTcpCluster.java:576) at org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:70 ) at org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(TcpRep licationThread.java:129) at org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicationT hread.java:67) Dec 16, 2006 12:54:11 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.54.4.16:40 09,192.54.4.16,4009, alive=135220] Here's the Tomcat 5.0.28 code from ReplicationTransmitter.java - sendMessageData - line 112 = if ( sender == null ) throw .... protected void sendMessageData(String sessionId, byte[] data, IDataSender sender) throws java.io.IOException { if ( sender == null ) throw new java.io.IOException("Sender not available. Make sure sender information is available to the ReplicationTransmitter."); try { if (!sender.isConnected()) sender.connect(); sender.sendMessage(sessionId,data); sender.setSuspect(false); addStats(data.length); }catch ( Exception x) { if ( !sender.getSuspect() ) { log.warn("Unable to send replicated message, is server down?", x); } sender.setSuspect(true); } Here's the Tomcat 5.0.28 code from ReplicationTransmitter.java - sendMessageData - line 136 = sendMessageData() public void sendMessage(String sessionId, byte[] indata, Member member) throws java.io.IOException { byte[] data = XByteBuffer.createDataPackage(indata); String key = member.getHost()+":"+member.getPort(); IDataSender sender = (IDataSender)map.get(key); << sender is apparently null at this point sendMessageData(sessionId,data,sender); } Also get an error like the following when the second server in the cluster is starting: 2006-12-17 11:18:26,259 ERROR (DeltaManager.java:663) - Manager[/toolbox/tasks], No session state received, timing out. Example cluster configuration from server.xml Using SimpleTcpReplicationManager in production <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.SimpleTcpReplicati onManager" expireSessionsOnShutdown="false" name="clusterProd" useDirtyFlag="false"> <Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.5" mcastPort="45565" mcastFrequency="500" mcastDropTime="3000"/> <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4005" tcpSelectorTimeout="100" tcpThreadCount="6"/> <Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" replicationMode="asynchronous"/> <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/> <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> </Cluster> OR - using DeltaManager in test <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true"> <Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.1.9" mcastPort="45579" mcastFrequency="500" mcastDropTime="3000"/> <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4109" tcpSelectorTimeout="100" tcpThreadCount="6"/> <Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" replicationMode="asynchronous"/> <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/> <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> </Cluster> --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]