You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by aws0934 <ar...@idealo.de> on 2012/11/19 18:01:54 UTC

Session timeout / IDataStore data removal in Wicket 6

Hi,

has something changed regarding session timeout / IDataStore data removal in
Wicket 6?

I´m running an application on jetty 8.1.1 and sessions seem to never time
out, which they did in Wicket 1.5.x and should, because they are set to 6
minutes lifetime.

Only when I programmatically force the session to be invalidated, my custom
LockingEhCacheDataStore´s (which is an implementation of IDataStore)
removeData method gets called.

Here is the stacktrace of the forceful invalidation, which should look quite
similar when a session times out naturally:

de.whatnot.app.LockingEhCacheDataStore.removeData(LockingEhCacheDataStore.java:84)
org.apache.wicket.pageStore.AsynchronousDataStore.removeData(AsynchronousDataStore.java:204)
org.apache.wicket.pageStore.DefaultPageStore.removePageData(DefaultPageStore.java:109)
org.apache.wicket.pageStore.DefaultPageStore.unbind(DefaultPageStore.java:161)
org.apache.wicket.page.PageStoreManager.sessionExpired(PageStoreManager.java:413)
org.apache.wicket.Application.sessionUnbound(Application.java:480)
org.apache.wicket.protocol.http.WebApplication.sessionUnbound(WebApplication.java:544)
org.apache.wicket.session.HttpSessionStore$SessionBindingListener.valueUnbound(HttpSessionStore.java:465)
org.eclipse.jetty.server.session.AbstractSession.unbindValue(AbstractSession.java:489)
org.eclipse.jetty.server.session.AbstractSession.clearAttributes(AbstractSession.java:340)
org.eclipse.jetty.server.session.AbstractSession.doInvalidate(AbstractSession.java:307)
org.eclipse.jetty.nosql.NoSqlSession.doInvalidate(NoSqlSession.java:124)
org.eclipse.jetty.server.session.AbstractSession.invalidate(AbstractSession.java:297)
org.apache.wicket.session.HttpSessionStore.invalidate(HttpSessionStore.java:188)
org.apache.wicket.Session.destroy(Session.java:496)
org.apache.wicket.Session.invalidateNow(Session.java:508)
org.apache.wicket.Session.detach(Session.java:651)
org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:614)
org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:558)
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:285)
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:77)
org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:144)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
de.whatnot.core.util.PrefetchFilter.doFilter(PrefetchFilter.java:40)
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483)
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:412)
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
org.eclipse.jetty.server.Server.handle(Server.java:351)
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634)
org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76)
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609)
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45)
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
java.lang.Thread.run(Thread.java:662) [LockingEhCacheDataStore.java:84]

I already parsed the git history for suspicious changes, but could not get a
clue.

Any help is deeply appreciated.

Thank you
Arne



--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/Session-timeout-IDataStore-data-removal-in-Wicket-6-tp4654004.html
Sent from the Users forum mailing list archive at Nabble.com.

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


Re: Session timeout / IDataStore data removal in Wicket 6

Posted by aws0934 <ar...@idealo.de>.
Hi Martin, 

you´re right: It is an issue of the webserver and has nothing to do with
Wicket 6. 

When a Mongo-based session is scavenged in Jetty, it is never invalidated,
so
org.apache.wicket.session.HttpSessionStore$SessionBindingListener.valueUnbound
does not get called. If I´m on the contrary invoke
org.eclipse.jetty.server.session.AbstractSession.invalidate directly,
Wicket´s SessionBindingListener reacts. It´s that simple.

By the way, I dared to upgrade a first website from Wicket 1.5.9 to Wicket
6.2.0. So far everything seems to be fine. The new way of JS / CSS resource
bundling with dependency management is a huge improvement, HTML output is
much cleaner and leaner etc.

Arne



--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/Session-timeout-IDataStore-data-removal-in-Wicket-6-tp4654004p4654042.html
Sent from the Users forum mailing list archive at Nabble.com.

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


Re: Session timeout / IDataStore data removal in Wicket 6

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

It should work the same way.
If you are able to reproduce it with a quickstart application then please
attach it to a ticket in Jira.
Also you can try with a newer version of Jetty (8.1.8) or even Tomcat
because the web container deals with the session management and Wicket just
registers a listener - org.apache.wicket.session.HttpSessionStore$
SessionBindingListener.valueUnbound(HttpSessionStore.java:465).


On Mon, Nov 19, 2012 at 7:01 PM, aws0934 <ar...@idealo.de>wrote:

> Hi,
>
> has something changed regarding session timeout / IDataStore data removal
> in
> Wicket 6?
>
> I´m running an application on jetty 8.1.1 and sessions seem to never time
> out, which they did in Wicket 1.5.x and should, because they are set to 6
> minutes lifetime.
>
> Only when I programmatically force the session to be invalidated, my custom
> LockingEhCacheDataStore´s (which is an implementation of IDataStore)
> removeData method gets called.
>
> Here is the stacktrace of the forceful invalidation, which should look
> quite
> similar when a session times out naturally:
>
>
> de.whatnot.app.LockingEhCacheDataStore.removeData(LockingEhCacheDataStore.java:84)
>
> org.apache.wicket.pageStore.AsynchronousDataStore.removeData(AsynchronousDataStore.java:204)
>
> org.apache.wicket.pageStore.DefaultPageStore.removePageData(DefaultPageStore.java:109)
>
> org.apache.wicket.pageStore.DefaultPageStore.unbind(DefaultPageStore.java:161)
>
> org.apache.wicket.page.PageStoreManager.sessionExpired(PageStoreManager.java:413)
> org.apache.wicket.Application.sessionUnbound(Application.java:480)
>
> org.apache.wicket.protocol.http.WebApplication.sessionUnbound(WebApplication.java:544)
>
> org.apache.wicket.session.HttpSessionStore$SessionBindingListener.valueUnbound(HttpSessionStore.java:465)
>
> org.eclipse.jetty.server.session.AbstractSession.unbindValue(AbstractSession.java:489)
>
> org.eclipse.jetty.server.session.AbstractSession.clearAttributes(AbstractSession.java:340)
>
> org.eclipse.jetty.server.session.AbstractSession.doInvalidate(AbstractSession.java:307)
> org.eclipse.jetty.nosql.NoSqlSession.doInvalidate(NoSqlSession.java:124)
>
> org.eclipse.jetty.server.session.AbstractSession.invalidate(AbstractSession.java:297)
>
> org.apache.wicket.session.HttpSessionStore.invalidate(HttpSessionStore.java:188)
> org.apache.wicket.Session.destroy(Session.java:496)
> org.apache.wicket.Session.invalidateNow(Session.java:508)
> org.apache.wicket.Session.detach(Session.java:651)
>
> org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:614)
> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:558)
>
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:285)
>
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
>
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245)
>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
>
> org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:77)
> org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:144)
>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
> de.whatnot.core.util.PrefetchFilter.doFilter(PrefetchFilter.java:40)
>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483)
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:412)
>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
> org.eclipse.jetty.server.Server.handle(Server.java:351)
>
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
>
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
>
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
> org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634)
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
>
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76)
>
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609)
>
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45)
>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
>
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
> java.lang.Thread.run(Thread.java:662) [LockingEhCacheDataStore.java:84]
>
> I already parsed the git history for suspicious changes, but could not get
> a
> clue.
>
> Any help is deeply appreciated.
>
> Thank you
> Arne
>
>
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/Session-timeout-IDataStore-data-removal-in-Wicket-6-tp4654004.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>