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. > >
