geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Trygve Hardersen" <try...@jotta.no>
Subject Re: wadi clustering - session invalidation
Date Thu, 15 Jan 2009 14:20:32 GMT
Cool, thanks for the quick fix.

I'm seeing other issues that look like race condititions to me, but
I've yet to find a consistent pattern.

I'll test this and let you know how it goes.

Trygve

On Thu, Jan 15, 2009 at 2:31 PM, Gianny Damour
<gianny.damour@optusnet.com.au> wrote:
> 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.update(SyncReplicationManager.java:147)
>>        at
>> org.codehaus.wadi.core.session.AbstractReplicableSession.onEndProcessing(AbstractReplicableSession.java:49)
>>        at
>> org.codehaus.wadi.core.session.AtomicallyReplicableSession.onEndProcessing(AtomicallyReplicableSession.java:58)
>>        at
>> org.codehaus.wadi.web.impl.WebInvocation.invoke(WebInvocation.java:121)
>>        at
>> org.codehaus.wadi.core.contextualiser.MemoryContextualiser.handleLocally(MemoryContextualiser.java:71)
>>        at
>> org.codehaus.wadi.core.contextualiser.AbstractExclusiveContextualiser.handle(AbstractExclusiveContextualiser.java:94)
>>        at
>> org.codehaus.wadi.core.contextualiser.AbstractMotingContextualiser.contextualise(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.handleLocally(MemoryContextualiser.java:71)
>>        at
>> org.codehaus.wadi.core.contextualiser.AbstractExclusiveContextualiser.handle(AbstractExclusiveContextualiser.java:94)
>>        at
>> org.codehaus.wadi.core.contextualiser.AbstractMotingContextualiser.contextualise(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