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
<[email protected]> 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