Return-Path: Delivered-To: apmail-tomcat-users-archive@www.apache.org Received: (qmail 46673 invoked from network); 2 Oct 2007 18:02:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Oct 2007 18:02:46 -0000 Received: (qmail 86109 invoked by uid 500); 2 Oct 2007 18:02:24 -0000 Delivered-To: apmail-tomcat-users-archive@tomcat.apache.org Received: (qmail 85210 invoked by uid 500); 2 Oct 2007 18:02:23 -0000 Mailing-List: contact users-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Users List" Delivered-To: mailing list users@tomcat.apache.org Received: (qmail 85199 invoked by uid 99); 2 Oct 2007 18:02:22 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Oct 2007 11:02:22 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [72.22.94.67] (HELO virtual.halosg.com) (72.22.94.67) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 02 Oct 2007 18:02:22 +0000 Received: (qmail 9766 invoked from network); 2 Oct 2007 12:58:34 -0500 Received: from 63-225-21-202.hlrn.qwest.net (HELO ?192.168.0.6?) (63.225.21.202) by halosg.com with SMTP; 2 Oct 2007 12:58:34 -0500 Message-ID: <47028751.5040700@hanik.com> Date: Tue, 02 Oct 2007 12:00:49 -0600 From: Filip Hanik - Dev Lists User-Agent: Thunderbird 2.0.0.6 (Windows/20070728) MIME-Version: 1.0 To: Tomcat Users List Subject: Re: DeltaManager cannot receive message through TCP channel in Tomcat cluster References: <46F944B8.3050506@titanemail.com> <4700C766.3030800@titanemail.com> <4701257F.7050904@hanik.com> <4702206A.8080507@titanemail.com> In-Reply-To: <4702206A.8080507@titanemail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Daniel M Garland wrote: > Thanks for the response > > So is it better to have one cluster rather than one per host? easier to manage and troubleshoot one cluster than many. > What about hosts that don't have clustering enabled? that's not a problem, clustering only applies to webapps with the element, if the all apps in a host are non clustered, then no clustering will be applied. > Surely there are advantages with having a separate cluster, its > listening on a different address so it would have its own message > buffer etc.? I see that as disadvantages, but thats a personal opinion. > > My current config is roughly as follows : I have two clusters > transmitting on differnet multicast addresses (but on the same port) > while I am binding my TCP listener to the external IP of the Tomcat > server on a different port: > > > > ... > > unpackWars="true" autoDeploy="true"> > > ... > > className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" > > managerClassName="org.apache.catalina.cluster.session.DeltaManager" > expireSessionsOnShutdown="false" > useDirtyFlag="true" > notifyListenersOnReplication="true"> > > > className="org.apache.catalina.cluster.mcast.McastService" > mcastAddr="228.0.0.5" > mcastPort="45565" > mcastFrequency="500" > mcastDropTime="20000"/> > > > className="org.apache.catalina.cluster.tcp.ReplicationListener" > tcpListenAddress="10.78.1.32" > tcpListenPort="5000" > tcpSelectorTimeout="100" > tcpThreadCount="6"/> > > > className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" > replicationMode="pooled" > ackTimeout="15000" > stateTransferTimeout="45" > waitForAck="true"/> > > className="org.apache.catalina.cluster.tcp.ReplicationValve" > > filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css;.*\.txt;"/> > className="org.apache.catalina.cluster.session.ClusterSessionListener"/> > > > > unpackWars="true" autoDeploy="true"> > > ... > > className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" > > managerClassName="org.apache.catalina.cluster.session.DeltaManager" > expireSessionsOnShutdown="false" > useDirtyFlag="true" > notifyListenersOnReplication="true"> > > > className="org.apache.catalina.cluster.mcast.McastService" > mcastAddr="229.0.0.5" > mcastPort="45565" > mcastFrequency="500" > mcastDropTime="20000"/> > > > className="org.apache.catalina.cluster.tcp.ReplicationListener" > tcpListenAddress="10.78.1.32" > tcpListenPort="5100" > tcpSelectorTimeout="100" > tcpThreadCount="6"/> > > > className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" > replicationMode="pooled" > ackTimeout="15000" > waitForAck="true"/> > > className="org.apache.catalina.cluster.tcp.ReplicationValve" > > filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.css;.*\.txt;"/> > > className="org.apache.catalina.cluster.session.ClusterSessionListener"/> > > > > ... > > > > Is there anything amiss with this configuration that would result in > the problems I am seeing? shouldn't be, unless you have some rogue instances running somewhere with the same config Filip > > Thanks > Dan > > > Filip Hanik - Dev Lists wrote: >> it would have to be the multicast address that is unique to take care >> of the problem, however, easier to run one cluster instance at the >> engine level, the cluster knows what vhost a piece of replicated data >> belongs to >> >> Filip >> >> Daniel M Garland wrote: >>> OK I've figured out what's happening, but not how to fix it! >>> >>> I'm running a single Tomcat instance that is hosting some virtual >>> hosts, and we have three Tapestry web applications. For those >>> unfamiliar with Tapestry, a Visit object is defined to represent the >>> user's session and is sort of a facade to avoid working directly >>> with HttpSession. Hence in a cluster this Visit object is propagated >>> around the cluster. >>> >>> Now, what seems to be the case is that Tomcat is getting muddled up >>> with the different Visit classes in each separate application; which >>> is not good. Not only are the classes in different java packages, >>> but they have unique serialVersionIDs. This then gives me the error: >>> >>> java.io.InvalidClassException: com.mydomain.Visit; local class >>> incompatible: stream classdesc serialVersionUID = -139355480 >>> 5485899996, local class serialVersionUID = 8444624889687850885 >>> >>> and it turns out that -1393554805485899996 is the Visit object from >>> a completely different web application. >>> >>> I'm trying to figure out what changes to my config I made when I >>> went from my old hardware to a new setup, and I believe that the >>> only change is that we configured each virtual host to use its own >>> element, rather than having a single cluster for the >>> engine; but I would've thought that having three seperate clusters >>> on different ports/ addresses would help to prevent this sort of >>> thing happening, rather than cause it? >>> >>> Any other reasons why my serialized objects are being confused in >>> this way? >>> >>> Daniel M Garland wrote: >>>> Hi all, >>>> >>>> I've been running two Tomcat 5.5.20 servers in a cluster for some >>>> time on Mac OSx but we've recently moved to 64-bit architecture >>>> (Debian etch) . I tried as far as possible to keep the config the >>>> same, so only the OS has changed (and I also got the Apache >>>> Portable Runtime going). However since moving to this new setup I'm >>>> starting to see the following messages in my catalina.out: >>>> >>>> 25-Sep-2007 16:35:11 >>>> org.apache.catalina.cluster.session.DeltaManager messageReceived >>>> SEVERE: Manager []: Unable to receive message through TCP channel >>>> java.lang.ClassNotFoundException: >>>> com.mycompany.someSerialiazbleObject >>>> >>>> and sometimes in other web apps I see instead of >>>> ClassNotFoundException: >>>> >>>> java.io.InvalidClassException: >>>> org.mycomapny.someOtherSerializableObject; local class >>>> incompatible: stream classdesc serialVersionUID = >>>> -1393554805485899996, local class serialVersionUID = >>>> 8444624889687850885 >>>> >>>> Now I did some homework here and I've tried the following without >>>> success: >>>> >>>> 1) I've compiled the java files on the server's themselves, so I am >>>> sure that the correct class versions are being used >>>> 2) The object implements java.io.Serializable, and has a generated >>>> serial ID from Eclipse. Incidentally, this Long value matches the >>>> local class serialVersionUID, so I have no idea where the 'stream' >>>> serialVersionUID comes from. >>>> 3) I have the same code running on both the Tomcat servers. >>>> >>>> What I would like to know is where I am supposed to look next for >>>> some answers to this problem. Is there any more information from my >>>> config that would be relevant to post here? >>>> >>>> Thanks in advance, my first 'tomcat-users' post :) >>>> >>>> Dan Garland >>>> daniel.garland@NO-SPAMtitanemail.com >>>> >>>> -- Stack Trace -- >>>> 25-Sep-2007 16:35:11 >>>> org.apache.catalina.cluster.session.DeltaManager messageReceived >>>> SEVERE: Manager []: Unable to receive message through TCP channel >>>> java.lang.ClassNotFoundException: >>>> com.mycompany.someSerialiazbleObject >>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:200) >>>> at java.security.AccessController.doPrivileged(Native Method) >>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:188) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:306) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:251) >>>> at >>>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) >>>> at java.lang.Class.forName0(Native Method) >>>> at java.lang.Class.forName(Class.java:242) >>>> at >>>> java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:574) >>>> at >>>> org.apache.catalina.cluster.session.ReplicationStream.resolveClass(ReplicationStream.java:84) >>>> >>>> at >>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538) >>>> >>>> at >>>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460) >>>> at >>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693) >>>> >>>> at >>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) >>>> at >>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) >>>> at >>>> org.apache.catalina.cluster.session.DeltaRequest$AttributeInfo.readExternal(DeltaRequest.java:334) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaRequest.readExternal(DeltaRequest.java:246) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest(DeltaManager.java:697) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA(DeltaManager.java:1572) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.messageReceived(DeltaManager.java:1522) >>>> >>>> at >>>> org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(DeltaManager.java:1271) >>>> >>>> at >>>> org.apache.catalina.cluster.session.ClusterSessionListener.messageReceived(ClusterSessionListener.java:85) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive(SimpleTcpCluster.java:1167) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceived(ClusterReceiverBase.java:426) >>>> >>>> at >>>> org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java:107) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(TcpReplicationThread.java:138) >>>> >>>> at >>>> org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicationThread.java:69) >>>> --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org For additional commands, e-mail: users-help@tomcat.apache.org