Uploaded image for project: 'Weld'
  1. Weld
  2. WELD-1813

Unable to dissociate conversation if session doesn't exist

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved (View Workflow)
    • Major
    • Resolution: Out of Date
    • 2.1.2.Final, 2.2.5.Final, 2.2.6.Final
    • None
    • None
    • None
    • This issue is security relevant
    • Hide

      1. Start long request.
      2. Invalidate session.
      3. Observe bad things happening when the long request ends.

      Show
      1. Start long request. 2. Invalidate session. 3. Observe bad things happening when the long request ends.

    Description

      If the session is invalidated in request 1 while another request 2 still exists in the same session with an associated conversation context, then on the end of the request 2 the conversation context will fail to dissociate and will stick to the thread forever.
      The following requests, that happen be served by the affected thread, will get the wrong stuck conversation context associated with them, regardless of propagation rules.

      Seems like this problem was encountered in WELD-1607, WFLY-1533, but remained unfixed.
      I checked that the issue is present in all specified affected versions and environments.

      I was unable to reproduce the issue with Weld 2.2.5.Final on Jetty 9.2.3.

      Some logs:

      20:22:01,056 TRACE [Servlet] (default task-32) WELD-000709: Destroying request io.undertow.servlet.spec.HttpServletRequestImpl@6a1781d6
      20:22:01,056 WARN  [Servlet] (default task-32) WELD-000712: Unable to dissociate context org.jboss.weld.context.http.LazyHttpConversationContextImpl@14d86c72 when destroying request io.undertow.servlet.spec.HttpServletRequestImpl@6a1781d6
      20:22:01,057 DEBUG [Servlet] (default task-32) Catching: java.lang.IllegalStateException: UT000010: Session not found GDqM0DfNpPJ9_sdcCCEE6uDd
      	at io.undertow.server.session.InMemorySessionManager$SessionImpl.getAttribute(InMemorySessionManager.java:319) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.servlet.spec.HttpSessionImpl.getAttribute(HttpSessionImpl.java:121) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
      	at org.jboss.weld.context.http.HttpConversationContextImpl.getSessionAttribute(HttpConversationContextImpl.java:33) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at org.jboss.weld.context.http.HttpConversationContextImpl.getSessionAttribute(HttpConversationContextImpl.java:14) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at org.jboss.weld.context.AbstractConversationContext.copyConversationIdGeneratorAndConversationsToSession(AbstractConversationContext.java:186) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at org.jboss.weld.context.AbstractConversationContext.dissociate(AbstractConversationContext.java:166) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at org.jboss.weld.servlet.ConversationContextActivator.disassociateConversationContext(ConversationContextActivator.java:163) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at org.jboss.weld.servlet.HttpContextLifecycle.requestDestroyed(HttpContextLifecycle.java:301) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at org.jboss.weld.servlet.WeldInitialListener.requestDestroyed(WeldInitialListener.java:143) [weld-core-impl-2.2.5.Final.jar:2014-09-15 07:54]
      	at io.undertow.servlet.core.ApplicationListeners.requestDestroyed(ApplicationListeners.java:225) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:283) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
      	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_71]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_71]
      	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_71]
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            vsevolodgol Vsevolod Golovanov
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: