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

[GSS](7.1.z) IllegalMonitorStateException if session invalidated after redirect

    XMLWordPrintable

Details

    • Hide
      response.sendRedirect("/foobar");
      request.getSession().invalidate();
      
      Show
      response.sendRedirect( "/foobar" ); request.getSession().invalidate();
    • Workaround Exists
    • Hide

      Call session invalidation first:

      request.getSession().invalidate();
      response.sendRedirect("/foobar");
      
      Show
      Call session invalidation first: request.getSession().invalidate(); response.sendRedirect( "/foobar" );

    Description

      response.sendRedirect unlocks the session. So attempting session.invalidate after any sendRedirect throws an IllegalMonitorStateException when it attempts to unlock it again:

      16:35:11,267 INFO  [stdout] (default task-1) --------------------------->StampedLock.unlock java.util.concurrent.locks.StampedLock@2a03fe4a[Unlocked] 257
      16:35:11,267 INFO  [stdout] (default task-1) java.util.concurrent.locks.StampedLock.unlock(StampedLock.java:603)
      16:35:11,267 INFO  [stdout] (default task-1) org.wildfly.clustering.web.undertow.session.DistributableSessionManager.lambda$getSessionCloseTask$1(DistributableSessionManager.java:103)
      16:35:11,267 INFO  [stdout] (default task-1) org.wildfly.clustering.web.undertow.session.DistributableSession.requestDone(DistributableSession.java:96)
      16:35:11,267 INFO  [stdout] (default task-1) io.undertow.servlet.spec.ServletContextImpl.updateSessionAccessTime(ServletContextImpl.java:860)
      16:35:11,267 INFO  [stdout] (default task-1) io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:572)
      16:35:11,267 INFO  [stdout] (default task-1) io.undertow.servlet.spec.HttpServletResponseImpl.sendRedirect(HttpServletResponseImpl.java:203)
      16:35:11,267 INFO  [stdout] (default task-1) org.apache.jsp.hi_jsp._jspService(hi_jsp.java:136)
      ...
      Caused by: java.lang.IllegalMonitorStateException
      	at java.util.concurrent.locks.StampedLock.unlock(StampedLock.java:609)
      	at org.wildfly.clustering.web.undertow.session.DistributableSessionManager.lambda$getSessionCloseTask$1(DistributableSessionManager.java:103)
      	at org.wildfly.clustering.web.undertow.session.DistributableSession.invalidate(DistributableSession.java:218)
      	at io.undertow.servlet.spec.HttpSessionImpl.invalidate(HttpSessionImpl.java:198)
      	at org.apache.jsp.hi_jsp._jspService(hi_jsp.java:137)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
      

      Attachments

        Issue Links

          Activity

            People

              chaowan@redhat.com Chao Wang
              rhn-support-aogburn Aaron Ogburn
              Peter Mackay Peter Mackay
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: