Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-15508

[GSS](7.1.z) UNDERTOW-1415 - Cross-context and session distributable blocked by DistributableSessionManager

XMLWordPrintable

    • +
    • Hide

      1.- Package webapp1 and webapp2 with maven.

      mvn clean package
      

      2.- Deploy webapp2.war and then webapp1.war.

      3.- Access to the servlet1 URL, by default it does a forward but you can pass a op=include parameter to use a include.

      http://localhost:8080/webapp1/servlet1?op=include
      or
      http://localhost:8080/webapp1/servlet1
      

      4.- Reload the same URL (Internal server error with exception UT005023: Exception handling request to /webapp1/servlet1: java.lang.RuntimeException: java.lang.RuntimeException: org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 15 seconds for key SessionCreationMetaDataKey(x9ah3VdYkbEentlDFomBMhRR_eilSE7UzlgPtVDI) and requestor GlobalTransaction:<null>:22:local. Lock is held by GlobalTransaction:<null>:14:local )

      Show
      1.- Package webapp1 and webapp2 with maven. mvn clean package 2.- Deploy webapp2.war and then webapp1.war. 3.- Access to the servlet1 URL, by default it does a forward but you can pass a op=include parameter to use a include. http://localhost:8080/webapp1/servlet1?op=include or http://localhost:8080/webapp1/servlet1 4.- Reload the same URL (Internal server error with exception UT005023: Exception handling request to /webapp1/servlet1: java.lang.RuntimeException: java.lang.RuntimeException: org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 15 seconds for key SessionCreationMetaDataKey(x9ah3VdYkbEentlDFomBMhRR_eilSE7UzlgPtVDI) and requestor GlobalTransaction:<null>:22:local. Lock is held by GlobalTransaction:<null>:14:local )

      Two distributable applications that perform a cross-context include or a forward (using the RequestDispatcher) are blocked indefinitely in a similar way than in JBEAP-15091.

      In an include the session flow is the following:

      1.- Session is created in webapp1:

      2018-09-21 13:26:22,200 INFO  [stdout] (default task-1) --------------------------->createSession HttpServerExchange{ GET /webapp1/servlet1 request {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8], Accept-Language=[es,en-US;q=0.9,en;q=0.8], Cache-Control=[max-age=0], Accept-Encoding=[gzip, deflate], DNT=[1], User-Agent=[Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36], Connection=[keep-alive], Cookie=[JSESSIONID=x4CAwrnhjV0Ud939Yrnnm01mzjHrzlecgObb_JKF.jboss], Upgrade-Insecure-Requests=[1], Host=[jboss.sample.com:8080]} response {X-Powered-By=[Undertow/1], Server=[JBoss-EAP/7]}} org.wildfly.clustering.web.undertow.session.DistributableSession@1beec2ad
      

      2.- Another session is created in webapp2 because of the include:

      2018-09-21 13:26:22,226 INFO  [stdout] (default task-1) --------------------------->createSession HttpServerExchange{ GET /webapp1/servlet1 request {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8], Accept-Language=[es,en-US;q=0.9,en;q=0.8], Cache-Control=[max-age=0], Accept-Encoding=[gzip, deflate], DNT=[1], User-Agent=[Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36], Connection=[keep-alive], Cookie=[JSESSIONID=x4CAwrnhjV0Ud939Yrnnm01mzjHrzlecgObb_JKF.jboss], Upgrade-Insecure-Requests=[1], Host=[jboss.sample.com:8080]} response {X-Powered-By=[Undertow/1], Server=[JBoss-EAP/7]}} org.wildfly.clustering.web.undertow.session.DistributableSession@ed20d29
      

      3.- Only first session is accepted (released), the second session is not and it produces the block.

      2018-09-21 13:26:22,262 INFO  [stdout] (default task-1) --------------------------->requestDone HttpServerExchange{ GET /webapp1/servlet1 request {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8], Accept-Language=[es,en-US;q=0.9,en;q=0.8], Cache-Control=[max-age=0], Accept-Encoding=[gzip, deflate], DNT=[1], User-Agent=[Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36], Connection=[keep-alive], Cookie=[JSESSIONID=x4CAwrnhjV0Ud939Yrnnm01mzjHrzlecgObb_JKF.jboss], Upgrade-Insecure-Requests=[1], Host=[jboss.sample.com:8080]} response {Connection=[keep-alive], X-Powered-By=[Undertow/1], Set-Cookie=[JSESSIONID=S1YATVuUV2H109H2yHFkkOyxNgA6wv7qgG27WcoV.jboss; path=/webapp1], Server=[JBoss-EAP/7], Content-Length=[230], Date=[Fri, 21 Sep 2018 11:26:22 GMT]}} org.wildfly.clustering.web.undertow.session.DistributableSession@1beec2ad
      

      Using forward the problem is the opposite (the session that is accepted is the second one and the first one is forgotten).

        1. webapp1.zip
          5 kB
        2. webapp2.zip
          4 kB

              rhn-support-iweiss Ingo Weiss
              rhn-support-rmartinc Ricardo Martin Camarero
              Daniel Cihak Daniel Cihak
              Daniel Cihak Daniel Cihak
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: