Getting closer. In the cases where it happens, the binding and unbinding is called after cleanup from different threads. Threads are named btpool0-1 -btpool0-7. But as I said, this happens only about every second time I start my jetty server. The other times, the binding- unbinding is called only once for each page request.
M. 10-10-14 23:13:47.075 [DEBUG] de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1596) session 95wqzf1oyaps asoHash 1646600475 10-10-14 23:13:47.075 [DEBUG] de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) session 95wqzf1oyaps asoHash 1646600475 name sso:de.example.aso.CurrentSessionASO thread btpool0-1 10-10-14 23:13:47.089 [DEBUG] de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1596) session 95wqzf1oyaps asoHash 1646600475 10-10-14 23:13:47.089 [DEBUG] de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) session 95wqzf1oyaps asoHash 1646600475 name sso:de.example.aso.CurrentSessionASO thread btpool0-7 10-10-14 23:13:47.091 [DEBUG] de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1596) session 95wqzf1oyaps asoHash 1646600475 10-10-14 23:13:47.091 [DEBUG] de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) session 95wqzf1oyaps asoHash 1646600475 name sso:de.example.aso.CurrentSessionASO thread btpool0-1 10-10-14 23:13:47.091 [DEBUG] de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1596) session 95wqzf1oyaps asoHash 1646600475 10-10-14 23:13:47.092 [DEBUG] de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) session 95wqzf1oyaps asoHash 1646600475 name sso:de.example.aso.CurrentSessionASO thread btpool0-5 10-10-14 23:13:47.098 [DEBUG] de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1596) session 95wqzf1oyaps asoHash 1646600475 10-10-14 23:13:47.098 [DEBUG] de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) session 95wqzf1oyaps asoHash 1646600475 name sso:de.example.aso.CurrentSessionASO thread btpool0-3 10-10-14 23:13:47.104 [DEBUG] de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1596) session 95wqzf1oyaps asoHash 1646600475 10-10-14 23:13:47.105 [DEBUG] de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) session 95wqzf1oyaps asoHash 1646600475 name sso:de.example.aso.CurrentSessionASO thread btpool0-4 Am 14.10.2010 um 22:04 schrieb Moritz Gmelin: > Hi, > > I added the logging as you suggested. This is part of the logging for a > _SINGLE_ page request. CurrentSessionASO is our SSO. > > 10-10-14 21:51:12.049 [DEBUG] > de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.066 [DEBUG] > de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1595) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.066 [DEBUG] > de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.069 [DEBUG] > de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1595) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.070 [DEBUG] > de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.073 [DEBUG] > de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1595) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.074 [DEBUG] > de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) > session 1vsqjhkzdsj37 asoHash 950050904 > 10-10-14 21:51:12.074 [INFO] > de.example.services.AppModule$3.create(AppModule.java:220) New > CurrentSessionASO object created CurrentSessionASO{user:0, account:0, > patient:0, project:, hash:950050904} for session 1vsqjhkzdsj37 > 10-10-14 21:51:12.077 [DEBUG] > de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1595) > session 1vsqjhkzdsj37 asoHash 950050904 > 10-10-14 21:51:12.079 [DEBUG] > de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.080 [DEBUG] > de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1595) > session 1vsqjhkzdsj37 asoHash 1363402032 > 10-10-14 21:51:12.080 [DEBUG] > de.example.aso.CurrentSessionASO.valueBound(CurrentSessionASO.java:1587) > session 1vsqjhkzdsj37 asoHash 950050904 > 10-10-14 21:51:12.084 [DEBUG] > de.example.aso.CurrentSessionASO.valueUnbound(CurrentSessionASO.java:1595) > session 1vsqjhkzdsj37 asoHash 950050904 > > You can see that the CurrentSessionASO is bound and unbound many times for a > signel page request. Sometimes (as you can see in the log here), a new > CurrentSessionASO object is created for the same session. This is done in my > ApplicationStateManagerContribution in AppModule. Most often times, there is > no new SSO created (correct behaviour). > > I'm starting the applcation here locally in a jetty environment. One weird > observation is also that about half of the startups of the application the > situation is totally different. Then, our SSO is only bound and unbound once > per page request, as I would expect. But the other times the situation as > above happens, that for every page request binding and unbinding happens > about 20 times. and sometimes a new SSO is created inbetween. > > Next thing to notice is that this all happens after the cleanup method of the > page is called. > > Thanks > > Moritz > > > > Am 14.10.2010 um 19:13 schrieb Howard Lewis Ship: > >> Tapestry manages persistent state in the HttpSession. As of 5.2, it >> doesn't do anything special to handle cases of multiple requests >> (perhaps due to Ajax) attempting to modify the same SSO in multiple >> threads. >> >> This aligns with Brian Goetz's observation that all stateful web >> applications are inherently broken: >> >> http://www.ibm.com/developerworks/library/j-jtp09238.html >> >> I'm not aware of any concerns. You may want to have your SSO >> implement the HttpSessionBindingListener interface, and log the >> details of when it is bound (saved to the HttpSession). That might >> illuminate what's going on. >> >> It may be a bug in your servlet container, it may be a race condition >> between threads, or it may just be a coding problem in your code. I >> hate to say it, but the last option is the most likely (given the >> total lack of information you've provided). >> >> On Thu, Oct 14, 2010 at 3:01 AM, Moritz Gmelin <moritz.gme...@gmx.de> wrote: >>> Hi, >>> >>> since upgradeing to Tapestry 5.2 (5.2.0 and 5.2.1) we sometimes obseve that >>> the contents of our SessionStateObject gets lost. >>> The Session-ID between 2 requests is identical, but the Hashcode of the >>> @SessionState object changes and thus the contents are lost. >>> If everything works correctly, the getHashCode() of the SessionState object >>> does not change between requests. But in the case where our SessionState >>> objects get lost beweeen requests, obviousely a new SessionState object >>> gets created. >>> This happens only in very rare cases but if it does, our users get chucked >>> out of their pages. >>> This has not happened with t5.1.0.5 as far as we can see. >>> >>> Has anyone else seen this problem yet? Any hints about a possible solution? >>> >>> Thanks >>> >>> Moritz >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >>> >> >> >> >> -- >> Howard M. Lewis Ship >> >> Creator of Apache Tapestry >> >> The source for Tapestry training, mentoring and support. Contact me to >> learn how I can get you up and productive in Tapestry fast! >> >> (971) 678-5210 >> http://howardlewisship.com >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org