> I don't believe that this DiskPageStore is clustered, because it is an
> actual file on the machine.  If this is the case then although the current
> page will be clustered by tomcat, the previous pages wont be, so wont be
> available on the other machine. This could  cause the exception you are
> seeing.


Thanks Richard that was REALLY helpful - I think this could well be
the issue - I had no idea about this and now I think about it I'm
kicking myself. I have a look into this to try and understand it and
do some searches



On Wed, Mar 31, 2010 at 5:02 PM, Richard Wilkinson
<richardjohnwilkin...@googlemail.com> wrote:
> afaik, the default SecondLevelCacheSessionStore works by keeping the current
> page in session (in memory) and uses DiskPageStore as its second level
> cache, which stores all the other pages in a file on disk.
>
> I don't believe that this DiskPageStore is clustered, because it is an
> actual file on the machine.  If this is the case then although the current
> page will be clustered by tomcat, the previous pages wont be, so wont be
> available on the other machine. This could  cause the exception you are
> seeing.
>
> However that is about the limit of my knowledge on the subject, and maybe
> now the DiskPageStore is clusterable.  When I have done clustering in the
> past I used a custom session store.
>
> Also I remember reading that you have to tell tomcat not to keep session
> attributes serialized after replication for it to work correctly see [1],
> (although that is a few years old)
>
> [1] - http://old.nabble.com/A-few-clustering-questions-td16993201.html
>
> --
>
> Regards - Richard Wilkinson
> Developer,
> jWeekend: OO & Java Technologies - Development and Training
> http://jWeekend.com
>
> On 31 March 2010 15:40, Wayne Pope <waynemailingli...@googlemail.com> wrote:
>
>> Thanks for the explanation Richard.
>>
>> We do have setAutomaticMultiWindowSupport set to false, because when
>> we had it set to true we had some problems (I cannot remember what
>> exactly - something to do with url mounting I think).
>>
>> Thing is when I experienced this issue I only had one tab open - it
>> may explain some of the other similar exceptions in the log though.
>> We're using the default SecondLevelCacheSessionStore.
>>
>> the plot thickens!
>>
>>
>> On Wed, Mar 31, 2010 at 4:22 PM, Richard Wilkinson
>> <richardjohnwilkin...@googlemail.com> wrote:
>> > Hi,
>> >
>> > Ok, anyone else please correct me if i am wrong, but afaik:
>> >
>> > The pagemap holds a finite number of pages in it, each time you access a
>> new
>> > page it gets added to the page map, how many pages it holds depends on
>> which
>> > implementation of page map you are using, which usually depends on which
>> > type of session store you are using, but usually pages are evicted from
>> the
>> > page map on a least recently used basis.
>> >
>> > If you had 2 tabs open, did a load of stuff on one tab, then went back to
>> > the other, it is quite possible the page in the other tab will have been
>> > removed from the page map.  However wicket should by default try and
>> detect
>> > that a new tab is open, and give the other tab a different page map, but
>> > this is not completely reliable. Also this can be turned
>> > off (application.getPageSettings().setAutomaticMultiWindowSupport(false);
>> i
>> > think), which maybe you have done.
>> >
>> > --
>> >
>> > Regards - Richard Wilkinson
>> > Developer,
>> > jWeekend: OO & Java Technologies - Development and Training
>> > http://jWeekend.com
>> >
>> >
>> > On 31 March 2010 15:02, Wayne Pope <waynemailingli...@googlemail.com>
>> wrote:
>> >
>> >> Hi Richard,
>> >>
>> >> thanks for the reply.
>> >> I'll have a look at trying to make the failover fail again - but the
>> >> last time we tested it was working fine so unless there is a core
>> >> problem with the apache balancer and tomcat I don't know what I can
>> >> do.
>> >>
>> >>
>> >> > There are probably other reasons why you might see a page expired
>> >> exception,
>> >> > for example if you access so many pages after the page you get the
>> >> exception
>> >> > on that it is it pushed out of the page map, but unless you can
>> reproduce
>> >> it
>> >> > by going directly a single tomcat instance, it is probably down to the
>> >> > clustering.
>> >>
>> >> Problem is I cannot reproduce it at all (and I have tried for quite
>> >> some time now). Can you explain a little more:
>> >>
>> >> >if you access so many pages after the page you get the exception
>> >> > on that it is it pushed out of the page map,
>> >>
>> >> Do you mean if we have 2 tabs open , and on one I move around the
>> >> pages then go back to the first tab and try and do something?
>> >>
>> >>
>> >>
>> >>
>> >> On Wed, Mar 31, 2010 at 3:26 PM, Richard Wilkinson
>> >> <richardjohnwilkin...@googlemail.com> wrote:
>> >> > Ok,
>> >> >
>> >> > If you can replicate the problem by the following:
>> >> > 1) shutting down tomcat 1, therefore ensuring that you go to tomcat 2,
>> >> > 2) going to a page on your site (that has some ajax on there),
>> >> > 3) starting up tomcat 1, then shutting down tomcat 2, therefore
>> ensuring
>> >> > that the next request goes to tomcat 1,
>> >> > 4) then make an ajax request on the current page.
>> >> >
>> >> > If you see the page expired then, it probably indicates that your
>> tomcat
>> >> > session clustering is either is not working correctly, or that
>> >> > you don't have any clustering in place.  Either of these problems will
>> >> mean
>> >> > that sessions are not shared to the other tomcat.  So whenever apache
>> >> > decides not to obey the sticky sessions (which it can do if it cannot
>> >> access
>> >> > the tomcat it wants to access) your users session (and pagemap) will
>> not
>> >> > be accessible, so you will see the page expired exception.
>> >> >
>> >> > You can also replicate this by making apache do 'round robin'
>> clustering
>> >> > since then you are pretty sure that requests will be fired
>> >> > to different boxes.
>> >> >
>> >> > If this is the problem, it will affect all users using your site at
>> the
>> >> time
>> >> > (ie they will all experience the exception), so you may want to try
>> and
>> >> test
>> >> > away from production if this is a problem for you.
>> >> >
>> >> > There are probably other reasons why you might see a page expired
>> >> exception,
>> >> > for example if you access so many pages after the page you get the
>> >> exception
>> >> > on that it is it pushed out of the page map, but unless you can
>> reproduce
>> >> it
>> >> > by going directly a single tomcat instance, it is probably down to the
>> >> > clustering.
>> >> >
>> >> > Hope that helps.
>> >> >
>> >> > --
>> >> > Regards - Richard Wilkinson
>> >> > Developer,
>> >> > jWeekend: OO & Java Technologies - Development and Training
>> >> > http://jWeekend.com
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > On 31 March 2010 14:04, Wayne Pope <waynemailingli...@googlemail.com>
>> >> wrote:
>> >> >
>> >> >> Hi Richard
>> >> >>
>> >> >> my mistake we have the following setting:
>> >> >>
>> >> >> ProxyPass / balancer://cluster/ stickysession=JSESSIONID
>> nofailover=Off
>> >> >>
>> >> >> This problem happens from time to time in production with no pattern
>> >> >> that we can find. We have a 'shared' firewall that hosts the SSL
>> cert,
>> >> >> going to the apache instance which balances to 2 tomcat instances.
>> >> >>
>> >> >> I know its happening as I've experienced it myself but there seems no
>> >> >> reason for it. We're using cookie sessions rather than url
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Wed, Mar 31, 2010 at 2:51 PM, Richard Wilkinson
>> >> >> <richardjohnwilkin...@googlemail.com> wrote:
>> >> >> > Hi Wayne,
>> >> >> >
>> >> >> > As far as I know mod_proxy_balancer does not have sticky sessions
>> on
>> >> by
>> >> >> > default, you have to tell it what cookie to use.  Am am assuming
>> that
>> >> you
>> >> >> > have multiple tomcats (or similar) behind apache, are you using any
>> >> sort
>> >> >> of
>> >> >> > session replication for them?
>> >> >> >
>> >> >> > Does this exception occur when you go directly to tomcat (or
>> whatever
>> >> you
>> >> >> > are using) and bypass apache, if so then it indicates a different
>> >> >> problem.
>> >> >> >
>> >> >> > --
>> >> >> > Regards - Richard Wilkinson
>> >> >> > Developer,
>> >> >> > jWeekend: OO & Java Technologies - Development and Training
>> >> >> > http://jWeekend.com
>> >> >> >
>> >> >> > On 31 March 2010 13:28, Wayne Pope <
>> waynemailingli...@googlemail.com>
>> >> >> wrote:
>> >> >> >
>> >> >> >> Well as far as I know the default balancer in apache supports this
>> >> yes.
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> On Mon, Mar 29, 2010 at 2:22 PM, Martijn Dashorst
>> >> >> >> <martijn.dasho...@gmail.com> wrote:
>> >> >> >> > Are you using sticky sessions?
>> >> >> >> >
>> >> >> >> > Martijn
>> >> >> >> >
>> >> >> >> > On Fri, Mar 26, 2010 at 5:15 PM, Wayne Pope
>> >> >> >> > <waynemailingli...@googlemail.com> wrote:
>> >> >> >> >> One more bit of info - it was a ajax request that caused this.
>> >> >> >> >>
>> >> >> >> >> Any ideas?
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> On Fri, Mar 26, 2010 at 3:42 PM, Wayne Pope <
>> >> >> >> waynemailingli...@gmail.com> wrote:
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>> oh and I doubled check that all the classes implement
>> >> Serializable
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>> Wayne Pope-2 wrote:
>> >> >> >> >>>>
>> >> >> >> >>>> Hi,
>> >> >> >> >>>>
>> >> >> >> >>>> we're getting this exception in production sometimes, and
>> today
>> >> I
>> >> >> >> >>>> experienced it first hand.
>> >> >> >> >>>> We have a session of 60 mins set in the web.xml - however I
>> got
>> >> >> this
>> >> >> >> >>>> after just 5 mins:
>> >> >> >> >>>>
>> >> >> >> >>>> org.apache.wicket.protocol.http.PageExpiredException: Cannot
>> >> find
>> >> >> the
>> >> >> >> >>>> rendered page in session
>> >> >> >> >>>> [pagemap=null,componentPath=1,versionNumber=0]
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:197)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> hub.app.wicket.app.HubRequestCycleProcessor.resolve(HubRequestCycleProcessor.java:137)
>> >> >> >> >>>>         at
>> >> >> org.apache.wicket.RequestCycle.step(RequestCycle.java:1301)
>> >> >> >> >>>>         at
>> >> >> >> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1419)
>> >> >> >> >>>>         at
>> >> >> >> org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:456)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:289)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> com.wideplay.warp.persist.PersistenceFilter$3.run(PersistenceFilter.java:141)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> com.wideplay.warp.persist.internal.Lifecycles.failEarlyAndLeaveNoOneBehind(Lifecycles.java:29)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> com.wideplay.warp.persist.PersistenceFilter.doFilter(PersistenceFilter.java:155)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
>> >> >> >> >>>>         at
>> >> >> >> >>>>
>> >> >> >>
>> >> >>
>> >>
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>> >> >> >> >>>>         at java.lang.Thread.run(Thread.java:619)
>> >> >> >> >>>>
>> >> >> >> >>>>
>> >> >> >> >>>> I honestly don't know where this is coming from.
>> >> >> >> >>>> What can cause this? cookie not being passed? apache proxy
>> >> balancer
>> >> >> >> not
>> >> >> >> >>>> working?
>> >> >> >> >>>>
>> >> >> >> >>>> Has anyone experienced this?
>> >> >> >> >>>>
>> >> >> >> >>>>
>> >> >> >> >>>> PS HubRequestCycleProcessor is just calling
>> >> >> WebRequestCycleProcessor
>> >> >> >> >>>>
>> >> >> >> >>>>
>> >> >> ---------------------------------------------------------------------
>> >> >> >> >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> >> >> >>>> For additional commands, e-mail:
>> users-h...@wicket.apache.org
>> >> >> >> >>>>
>> >> >> >> >>>>
>> >> >> >> >>>>
>> >> >> >> >>>
>> >> >> >> >>> --
>> >> >> >> >>> View this message in context:
>> >> >> >>
>> >> >>
>> >>
>> http://old.nabble.com/PageExpiredException---getting-this-when-the-session-hasn%27t-timeout-tp28043403p28043436.html
>> >> >> >> >>> Sent from the Wicket - User mailing list archive at
>> Nabble.com.
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> ---------------------------------------------------------------------
>> >> >> >> >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> >> >> >>> For additional commands, e-mail: users-h...@wicket.apache.org
>> >> >> >> >>>
>> >> >> >> >>>
>> >> >> >> >>
>> >> >> >> >>
>> >> ---------------------------------------------------------------------
>> >> >> >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> >> >> >> For additional commands, e-mail: users-h...@wicket.apache.org
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Become a Wicket expert, learn from the best:
>> >> >> http://wicketinaction.com
>> >> >> >> > Apache Wicket 1.4 increases type safety for web applications
>> >> >> >> > Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.4
>> >> >> >> >
>> >> >> >> >
>> >> ---------------------------------------------------------------------
>> >> >> >> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> >> >> > For additional commands, e-mail: users-h...@wicket.apache.org
>> >> >> >> >
>> >> >> >> >
>> >> >> >>
>> >> >> >>
>> ---------------------------------------------------------------------
>> >> >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> >> >> For additional commands, e-mail: users-h...@wicket.apache.org
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >>
>> >> >> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> >> For additional commands, e-mail: users-h...@wicket.apache.org
>> >> >>
>> >> >>
>> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> For additional commands, e-mail: users-h...@wicket.apache.org
>> >>
>> >>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to