John,

I,m not sure I see why you're experiencing this behavior. In this case
it is not obvious and without any knowledge about what your app is
doing it is difficult to say. It may be a bug in the Faces / NetUI
Page Flow integration though I honestly can't tell.

Both threads seem to show that the locking order is reversed from what
is expected (lock on Session Mutex then lock on Page Flow Controller)
and in addition thread 277 is trying to lock a second and different
instance of the UserProfileController than the one it already has a
lock on. Seems odd.

>From the stack trace, this is what appears to be going on... I think...

Thread 280 looks like it is handling a request for a faces page. It
locks on the associated Controller (a
portlets.admin.userlifecycle.UserProfileController - 0xbf42f380). Then
the Faces /NetUI integration raises a Page Flow action for the JSF
page (via a request dispatcher forward). After the action has been
executed, the PageFlowRequestProcessor tries to update the session so
it tries to get the Session Mutex lock... but waits in a deadlock
because...

Thread 277 is also handing a request for a faces page (same page?). It
locks on the associated Controller (a
portlets.admin.userlifecycle.UserProfileController - 0xbf950570)... a
different instance than the one from thread 280 (this seems odd for
two concurrent thread requests from the same user session). So it does
not wait for the other thread. It gets a lock on this instance and the
Faces /NetUI integration raises a Page Flow action for the JSF page,
like thread 280. After the action has been executed, the
PageFlowRequestProcessor tries to update the session. It is the first
to get the Session Mutex. It then tries to get a lock on the current
Controller. At this point this request tries to get a lock on the
instance of UserProfileController that thread 280 has a lock on -
0xbf42f380 - and not the instance this thread already got a lock on.
Deadlock.

Any details about the application or use scenario that might help?

Kind regards,
Carlin

On 10/30/07, JLiew <[EMAIL PROTECTED]> wrote:
>
> Carlin,
>
> I'm seeing another instance of deadlock in HttpSessionMutexListener.
> I'm using release 1.0.2. Any idea what's going on?
>
> Below are the details and stack trace:
>
> "ExecuteThread: '280' for queue: 'default'" daemon prio=1 tid=0x08636268
> nid=0xd71 waiting for monitor entry [0x6e873000..0x6e874470]
>         at
> org.apache.beehive.netui.pageflow.internal.DeferredSessionStorageHandler.applyChanges(DeferredSessionStorageHandler.java:2
> 04)
>         - waiting to lock <0xb4642f50> (a
> org.apache.beehive.netui.pageflow.HttpSessionMutexListener$Mutex)
>         at
> com.bea.portlet.adapter.scopedcontent.ScopedContentStorageHandler.applyChanges(ScopedContentStorageHandler.java:73)
>         at
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:863)
>         at
> org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631)
>         at
> org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158)
>         at
> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>         at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
>         at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
>         at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
>         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:251)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:501)
>         at
> weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:245)
>         at
> org.apache.beehive.netui.pageflow.faces.internal.PageFlowNavigationHandler.handleNavigation(PageFlowNavigationHandler.java
> :110)
>         at
> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:89)
>         at
> org.apache.beehive.netui.pageflow.faces.internal.PageFlowActionListener.processAction(PageFlowActionListener.java:60)
>         at javax.faces.component.UICommand.broadcast(UICommand.java:312)
>         at
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
>         at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
>         at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
>         at
> com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
>         at
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
>         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
>         at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
>         at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
>         at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
>         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> org.apache.beehive.netui.pageflow.PageFlowPageFilter.runPage(PageFlowPageFilter.java:385)
>         - locked <0xbf42f380> (a
> portlets.admin.userlifecycle.UserProfileController)
>         at
> org.apache.beehive.netui.pageflow.PageFlowPageFilter.doFilter(PageFlowPageFilter.java:284)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> com.citi.gpb.portal.admin.filter.AdminAuthenticationFilter.doFilter(AdminAuthenticationFilter.java:167)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:183)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:251)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3243)
>         at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
>         at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
>         at
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2003)
>         at
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1909)
>         at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
>         at
> weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
>         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
>         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
>
> "ExecuteThread: '277' for queue: 'default'" daemon prio=1 tid=0x08633598
> nid=0xd6e waiting for monitor entry [0x6e9f6000..0x6e9f76f0]
>         at
> org.apache.beehive.netui.pageflow.internal.DeferredSessionStorageHandler.applyChanges(DeferredSessionStorageHandler.java:233)
>         - waiting to lock <0xbf42f380> (a
> portlets.admin.userlifecycle.UserProfileController)
>         - locked <0xb4642f50> (a
> org.apache.beehive.netui.pageflow.HttpSessionMutexListener$Mutex)
>         at
> com.bea.portlet.adapter.scopedcontent.ScopedContentStorageHandler.applyChanges(ScopedContentStorageHandler.java:73)
>         at
> org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:863)
>         at
> org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631)
>         at
> org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158)
>         at
> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
>         at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
>         at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
>         at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
>         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:251)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:501)
>         at
> weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:245)
>         at
> org.apache.beehive.netui.pageflow.faces.internal.PageFlowNavigationHandler.handleNavigation(PageFlowNavigationHandler.java:110
> )
>         at
> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:89)
>         at
> org.apache.beehive.netui.pageflow.faces.internal.PageFlowActionListener.processAction(PageFlowActionListener.java:60)
>         at javax.faces.component.UICommand.broadcast(UICommand.java:312)
>         at
> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
>         at
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
>         at
> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
>         at
> com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
>         at
> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
>         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
>         at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:223)
>         at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
>         at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
>         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> org.apache.beehive.netui.pageflow.PageFlowPageFilter.runPage(PageFlowPageFilter.java:385)
>         - locked <0xbf950570> (a
> portlets.admin.userlifecycle.UserProfileController)
>         at
> org.apache.beehive.netui.pageflow.PageFlowPageFilter.doFilter(PageFlowPageFilter.java:284)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> com.citi.gpb.portal.admin.filter.AdminAuthenticationFilter.doFilter(AdminAuthenticationFilter.java:167)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:183)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:251)
>         at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
>         at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3243)
>         at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
>         at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
>         at
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2003)
>         at
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1909)
>         at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1359)
>         at
> weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
>         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
>         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
>
>
> --
> View this message in context: 
> http://www.nabble.com/Deadlocks-in-HttpSessionMutexListener-tf1976622.html#a13494691
> Sent from the Beehive - User mailing list archive at Nabble.com.
>
>

Reply via email to