Hmm, that's a bit concerning. Brantley Hobbs wrote:
> Matt, > > We've seen a similar problem with our cluster. > > First off, let me say that I'm the person that filed bug #31495, so > we've been struggling with clustering for a while now. > > In our case, we've actually stored a string as a session attribute on a > page, and then keep reloading the page, appending to the string with > each reload (e.g., myString += "-1" should produce "-1-1-1-1-1-1..." > with the string growing longer with each reload). What we've found is > that the session actually randomly loses data sometimes (i.e., the > string doesn't get appended). We're not at the point yet to be able to > identify the problem well enough to file a bug, but that may be coming > soon. The problem does not happen at all when there is only one machine > in the "cluster". > > This might not seem on the surface to be the same problem, but it seems > suspicious that you're also noticing data consistency issues. > > Filip, as soon as we can we will get some test code together that > reproduces the problem and get it to you. Is it appropriate to send it > directly to you? > > Thanks, > Brantley Hobbs > > > -----Original Message----- > > From: Matthew Stone [mailto:[EMAIL PROTECTED] > > Sent: Monday, October 18, 2004 6:23 PM > > To: Tomcat Users List > > Subject: Re: Session problems with cluster > > > > Filip, > > > > I discovered this when I had one node in the cluster. With no other > nodes > > to receive a session from, I expected the session to be > > empty. Is the session intended to survive reloads in this case? I > would > > guess not, just because of the complexities involved with the > > > > class definitions. > > > > This code should be enough to cause the problem after a stop and start > of > > the context. > > > > :test.jsp > > <html> > > <% > > Object obj = request.getSession ().getAttribute ("my_object"); > > > > if (obj == null) { > > out.println("MyObject was null. Adding instance to session, please > > start and stop context.<br>"); > > request.getSession ().setAttribute ("my_object", new > testpkg.MyObject > > ()); > > } else { > > out.println ("<li>MyObject was in session"); > > out.println ("<li>Do class names match: " + (obj.getClass > ().getName > > ().equals (testpkg.MyObject.class.getName ()))); > > out.println ("<li>Are objects assignable: " + (obj instanceof > > testpkg.MyObject) + "<br>"); > > > > try { > > testpkg.MyObject o = (testpkg.MyObject) request.getSession > > ().getAttribute ("my_object"); > > } catch (ClassCastException e) { > > out.println ("<li>" + e); > > } > > } > > > > %> > > </html> > > > > :MyObject.java > > package testpkg; > > > > public class MyObject implements java.io.Serializable { > > public int i = 0; > > } > > > > web.xml > > > > <?xml version="1.0" encoding="ISO-8859-1"?> > > <!DOCTYPE web-app > > PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" > > "http://java.sun.com/dtd/web-app_2_3.dtd"> > > > > <web-app> > > <display-name>Test</display-name> > > > > <distributable/> > > </web-app> > > > > > > - Used all the packaged cluster settings. > > > > Thanks, > > Matthew > > > > > > Filip Hanik - Dev wrote: > > > > > >I'm expecting a null from > > > >the following line > > > > > > No, you would not expect null. The session replication mechanism is > > supposed to survive context reloads. > > > But you should not be getting a ClassCastException, if you are I > would > > love for you to submit a test case. > > > > > > When a context is reloaded, it will startup again, at which point > the > > manager will request the state from another server. This data > > > comes over serialized and is reloaded by the new classloader, hence > you > > shouldn't get ClassCastExceptions, > > > > > > the only way you would get class cast exceptions is if you actually > > recompiled the class on one of your servers. > > > > > > Due to busy work schedule, I haven't had a chance to fix the context > > reload, I only recently found out (same way you did) that > > > context reload was broken. > > > > > > Filip > > > > > > ----- Original Message ----- > > > From: "Matthew Stone" <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Sent: Monday, October 18, 2004 2:09 PM > > > Subject: Session problems with cluster > > > > > > When I restart the context of a clustered node the session doesnt > seem > > > to be cleared. After I restart the context, I'm expecting a null > from > > > the following line but I'm getting a ClassCastException because of > the > > > different class loaders that loaded MyObject. > > > > > > MyObject obj = (MyObject) request.getSession ().getAttribute > > > ("my_object"); > > > > > > I'm using 5.0.25 because I was running into bug 31495 "Context > reload > > > causes ClusterManager to stop operating" in version 5.0.28. > > > > > > Does 5.0.29 address this? I didn't see that the bug was closed. > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
