|
|
|
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: {noformat} 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] {noformat}
|
|
|
|