geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gianny Damour <gianny.dam...@optusnet.com.au>
Subject Re: wadi clustering - session invalidation
Date Thu, 15 Jan 2009 13:31:58 GMT
Hi Trygve,

This was a bug and it is now fixed; I also changed the log level as  
ERROR was indeed inappropriate.

You will need to get a snapshot version of wadi-core as this was a  
problem with WADI which was not properly re-initiating replicas when  
sessions were evacuated from a node shutting down to all the  
remaining nodes.  I will review more closely the re-initialisation of  
replicas in the case of normal shutdown over the week-end as there is  
still a problem in a very specific race condition (I do not think  
that you will be able to observe it).


You can get the snapshot there:

http://snapshots.repository.codehaus.org/org/codehaus/wadi/wadi-core/ 
2.2-SNAPSHOT/wadi-core-2.2-20090115.131018-1.jar


The simplest thing is to replace

repository/org/codehaus/wadi/wadi-core/2.1/wadi-core-2.1.jar

with this snapshot version. You can also install this artefact in  
your repo with a version number higher than 2.1. and it will be  
transparently picked-up instead of 2.1.


I will need to cut a release of WADI very soon as these fixes need to  
be included in G 2.2. So, you should not have to use this snapshot  
for more than 3-4 days.

Thanks,
Gianny

On 14/01/2009, at 11:47 PM, Trygve Hardersen wrote:

> Great, thanks a lot Gianny.
>
> I updated the source and I'm no longer getting the error. I am  
> however seeing this upon session invalidation:
>
> 13:29:01,528 INFO  [HybridRelocater] Unknown session [a4gezreo2fd4]
> 13:29:03,532 ERROR [StandardManager] Could not acquire session  
> [a4gezreo2fd4]
>
> I guess this is because the browser is redirected after session  
> invalidation but still includes the old session ID in the request.  
> If so the log message from the StandardManager should probably not  
> be at the ERROR level as it is a very common situation. Non- 
> critical nevertheless.
>
> There is still an issue if I stop one of the nodes gracefully (i.e.  
> $GERONIMO_HOME/bin/shutdown.sh). On subsequent requests I'm getting  
> this error:
>
> 13:34:39,808 ERROR [log] /profile
> org.codehaus.wadi.replication.manager.ReplicationKeyNotFoundException: 
>  Key [v9ekd9eipx2h] does not exist
>         at  
> org.codehaus.wadi.replication.manager.basic.SyncReplicationManager.upd 
> ate(SyncReplicationManager.java:147)
>         at  
> org.codehaus.wadi.core.session.AbstractReplicableSession.onEndProcessi 
> ng(AbstractReplicableSession.java:49)
>         at  
> org.codehaus.wadi.core.session.AtomicallyReplicableSession.onEndProces 
> sing(AtomicallyReplicableSession.java:58)
>         at org.codehaus.wadi.web.impl.WebInvocation.invoke 
> (WebInvocation.java:121)
>         at  
> org.codehaus.wadi.core.contextualiser.MemoryContextualiser.handleLocal 
> ly(MemoryContextualiser.java:71)
>         at  
> org.codehaus.wadi.core.contextualiser.AbstractExclusiveContextualiser. 
> handle(AbstractExclusiveContextualiser.java:94)
>         at  
> org.codehaus.wadi.core.contextualiser.AbstractMotingContextualiser.con 
> textualise(AbstractMotingContextualiser.java:37)
>         at  
> org.codehaus.wadi.core.manager.StandardManager.processStateful 
> (StandardManager.java:150)
>         at  
> org.codehaus.wadi.core.manager.StandardManager.contextualise 
> (StandardManager.java:142)
>         at  
> org.codehaus.wadi.core.manager.ClusteredManager.contextualise 
> (ClusteredManager.java:81)
>         at  
> org.apache.geronimo.jetty6.cluster.wadi.WADIClusteredPreHandler 
> $WADIWebClusteredInvocation.invoke(WADIClusteredPreHandler.java:72)
>         at  
> org.apache.geronimo.jetty6.cluster.AbstractClusteredPreHandler.handle( 
> AbstractClusteredPreHandler.java:39)
>         at  
> org.apache.geronimo.jetty6.cluster.ClusteredSessionHandler.handle 
> (ClusteredSessionHandler.java:51)
>         at org.mortbay.jetty.handler.ContextHandler.handle 
> (ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle 
> (WebAppContext.java:405)
>         at  
> org.apache.geronimo.jetty6.handler.TwistyWebAppContext.access$101 
> (TwistyWebAppContext.java:40)
>         at org.apache.geronimo.jetty6.handler.TwistyWebAppContext 
> $TwistyHandler.handle(TwistyWebAppContext.java:65)
>         at  
> org.apache.geronimo.jetty6.handler.ThreadClassloaderHandler.handle 
> (ThreadClassloaderHandler.java:46)
>         at  
> org.apache.geronimo.jetty6.handler.InstanceContextHandler.handle 
> (InstanceContextHandler.java:67)
>         at  
> org.apache.geronimo.jetty6.handler.UserTransactionHandler.handle 
> (UserTransactionHandler.java:48)
>         at  
> org.apache.geronimo.jetty6.handler.ComponentContextHandler.handle 
> (ComponentContextHandler.java:47)
>         at  
> org.apache.geronimo.jetty6.handler.TwistyWebAppContext.handle 
> (TwistyWebAppContext.java:59)
>         at org.mortbay.jetty.servlet.Dispatcher.forward 
> (Dispatcher.java:285)
>         at org.mortbay.jetty.servlet.Dispatcher.forward 
> (Dispatcher.java:126)
>         at  
> org.apache.tiles.servlet.context.ServletTilesRequestContext.forward 
> (ServletTilesRequestContext.java:198)
>         at  
> org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch 
> (ServletTilesRequestContext.java:179)
>         at org.apache.tiles.impl.BasicTilesContainer.render 
> (BasicTilesContainer.java:675)
>         at org.apache.tiles.impl.BasicTilesContainer.render 
> (BasicTilesContainer.java:631)
>         at org.apache.tiles.impl.BasicTilesContainer.render 
> (BasicTilesContainer.java:307)
>         at  
> no.jotta.backup.web.gui.profile.servlets.ProfileServlet.doGet 
> (ProfileServlet.java:74)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java: 
> 693)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java: 
> 806)
>         at org.mortbay.jetty.servlet.ServletHolder.handle 
> (ServletHolder.java:487)
>         at  
> org.apache.geronimo.jetty6.InternalJettyServletHolder.handle 
> (InternalJettyServletHolder.java:65)
>         at org.mortbay.jetty.servlet.ServletHandler 
> $CachedChain.doFilter(ServletHandler.java:1093)
>         at no.jotta.backup.web.gui.pub.filters.AppFilter.doFilter 
> (AppFilter.java:131)
>         at org.mortbay.jetty.servlet.ServletHandler 
> $CachedChain.doFilter(ServletHandler.java:1084)
>         at  
> no.jotta.backup.web.toolbox.filters.CacheControlFilter.doFilter 
> (CacheControlFilter.java:135)
>         at org.mortbay.jetty.servlet.ServletHandler 
> $CachedChain.doFilter(ServletHandler.java:1084)
>         at org.mortbay.servlet.UserAgentFilter.doFilter 
> (UserAgentFilter.java:81)
>         at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java: 
> 129)
>         at org.mortbay.jetty.servlet.ServletHandler 
> $CachedChain.doFilter(ServletHandler.java:1084)
>         at org.mortbay.jetty.servlet.ServletHandler.handle 
> (ServletHandler.java:360)
>         at org.mortbay.jetty.security.SecurityHandler.handle 
> (SecurityHandler.java:216)
>         at  
> org.apache.geronimo.jetty6.handler.JettySecurityHandler.handle 
> (JettySecurityHandler.java:114)
>         at org.mortbay.jetty.servlet.SessionHandler.handle 
> (SessionHandler.java:181)
>         at  
> org.apache.geronimo.jetty6.cluster.ClusteredSessionHandler.doHandle 
> (ClusteredSessionHandler.java:59)
>         at  
> org.apache.geronimo.jetty6.cluster.ClusteredSessionHandler 
> $ActualHandler.handle(ClusteredSessionHandler.java:66)
>         at  
> org.apache.geronimo.jetty6.cluster.AbstractClusteredPreHandler 
> $WebClusteredInvocation.invokeLocally 
> (AbstractClusteredPreHandler.java:71)
>         at  
> org.apache.geronimo.jetty6.cluster.wadi.WADIClusteredPreHandler 
> $WADIWebClusteredInvocation.access$000(WADIClusteredPreHandler.java: 
> 52)
>         at  
> org.apache.geronimo.jetty6.cluster.wadi.WADIClusteredPreHandler 
> $WADIWebClusteredInvocation$1.doFilter(WADIClusteredPreHandler.java: 
> 64)
>         at org.codehaus.wadi.web.impl.WebInvocation.invoke 
> (WebInvocation.java:116)
>         at  
> org.codehaus.wadi.core.contextualiser.MemoryContextualiser.handleLocal 
> ly(MemoryContextualiser.java:71)
>         at  
> org.codehaus.wadi.core.contextualiser.AbstractExclusiveContextualiser. 
> handle(AbstractExclusiveContextualiser.java:94)
>         at  
> org.codehaus.wadi.core.contextualiser.AbstractMotingContextualiser.con 
> textualise(AbstractMotingContextualiser.java:37)
>         at  
> org.codehaus.wadi.core.manager.StandardManager.processStateful 
> (StandardManager.java:150)
>         at  
> org.codehaus.wadi.core.manager.StandardManager.contextualise 
> (StandardManager.java:142)
>         at  
> org.codehaus.wadi.core.manager.ClusteredManager.contextualise 
> (ClusteredManager.java:81)
>         at  
> org.apache.geronimo.jetty6.cluster.wadi.WADIClusteredPreHandler 
> $WADIWebClusteredInvocation.invoke(WADIClusteredPreHandler.java:72)
>         at  
> org.apache.geronimo.jetty6.cluster.AbstractClusteredPreHandler.handle( 
> AbstractClusteredPreHandler.java:39)
>         at  
> org.apache.geronimo.jetty6.cluster.ClusteredSessionHandler.handle 
> (ClusteredSessionHandler.java:51)
>         at org.mortbay.jetty.handler.ContextHandler.handle 
> (ContextHandler.java:726)
>         at org.mortbay.jetty.webapp.WebAppContext.handle 
> (WebAppContext.java:405)
>         at  
> org.apache.geronimo.jetty6.handler.TwistyWebAppContext.access$101 
> (TwistyWebAppContext.java:40)
>         at org.apache.geronimo.jetty6.handler.TwistyWebAppContext 
> $TwistyHandler.handle(TwistyWebAppContext.java:65)
>         at  
> org.apache.geronimo.jetty6.handler.ThreadClassloaderHandler.handle 
> (ThreadClassloaderHandler.java:46)
>         at  
> org.apache.geronimo.jetty6.handler.InstanceContextHandler.handle 
> (InstanceContextHandler.java:58)
>         at  
> org.apache.geronimo.jetty6.handler.UserTransactionHandler.handle 
> (UserTransactionHandler.java:48)
>         at  
> org.apache.geronimo.jetty6.handler.ComponentContextHandler.handle 
> (ComponentContextHandler.java:47)
>         at  
> org.apache.geronimo.jetty6.handler.TwistyWebAppContext.handle 
> (TwistyWebAppContext.java:59)
>         at org.mortbay.jetty.handler.ContextHandlerCollection.handle 
> (ContextHandlerCollection.java:206)
>         at org.mortbay.jetty.handler.HandlerCollection.handle 
> (HandlerCollection.java:114)
>         at org.mortbay.jetty.handler.HandlerWrapper.handle 
> (HandlerWrapper.java:139)
>         at org.mortbay.jetty.Server.handle(Server.java:324)
>         at org.mortbay.jetty.HttpConnection.handleRequest 
> (HttpConnection.java:505)
>         at org.mortbay.jetty.HttpConnection 
> $RequestHandler.headerComplete(HttpConnection.java:828)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
>         at org.mortbay.jetty.HttpParser.parseAvailable 
> (HttpParser.java:211)
>         at org.mortbay.jetty.HttpConnection.handle 
> (HttpConnection.java:380)
>         at org.mortbay.io.nio.SelectChannelEndPoint.run 
> (SelectChannelEndPoint.java:395)
>         at org.apache.geronimo.pool.ThreadPool$1.run 
> (ThreadPool.java:214)
>         at org.apache.geronimo.pool.ThreadPool 
> $ContextClassLoaderRunnable.run(ThreadPool.java:344)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask 
> (ThreadPoolExecutor.java:886)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:619)
>
> If I start a new session with the browser the problem goes away,  
> but it seems to persist as long as the unknown session ID is  
> included in the request.
>
> If I kill one of the nodes (using kill -9 PID) this problem does  
> not occur. Only on clean shutdowns.
>
> Thanks again for your help!
>
> Trygve
>
> On Wed, Jan 14, 2009 at 9:05 AM, Gianny Damour  
> <gianny.damour@optusnet.com.au> wrote:
> Hi Trygve,
>
> This was a regression and it is now fixed.
>
> If you are building from source 2.2-SNAPSHOT, then here are the  
> steps to apply the fix:
>
> 1. update plugins/jetty/geronimo-jetty6-clustering-wadi
> 2. build geronimo-jetty6-clustering-wadi
> 3. copy resulting artefact to your repository under repository/org/ 
> apache/geronimo/modules/geronimo-jetty6-clustering-wadi/2.2-SNAPSHOT/
>
> Let us know if you are not building from source and I will push a  
> snapshot.
>
> Thanks,
> Gianny
>


Mime
View raw message