Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-10661

IllegalMonitorStateException if session invalidated after redirect

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Minor Minor
    • 14.0.0.Beta2
    • None
    • Clustering
    • None
    • 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" );

      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)
      

        1. stacktrace.txt
          8 kB
          Adam Krajcik
        2. undertow1374.war
          1 kB
          Aaron Ogburn

              pferraro@redhat.com Paul Ferraro
              rhn-support-aogburn Aaron Ogburn
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Created:
                Updated:
                Resolved: