ICEfaces
  1. ICEfaces
  2. ICE-1257

IntervalRenderer could detect expired session

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Cannot Reproduce
    • Affects Version/s: 1.5.2
    • Fix Version/s: 1.8RC1, 1.8
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Operating System: All
      Platform: All

      Description

      Found this while testing autoBeansFacelets.

      Right now, if you use an IntervalRenderer, and the session expires, then it will
      throw however many TransientRenderingExceptions before failing, exactly the same
      as if you closed the browser window. But, that's unnecessary, because the class
      that calls render on the PersistentFacesState could just look into the
      PersistentFacesState, and see if the session has expired, and immediately throw
      a fatal rendering exception.

      In a server with tight resources it would probably be preferable to use a
      fail-fast strategy here, especially if the IntervalRenderer uses a large time
      interval, which could unnecessarily hold resources for a very long time.


      ERROR [D2DFaceletViewHandler] Problem in renderResponse: getAttribute: Session
      already invalidated
      java.lang.IllegalStateException: getAttribute: Session already invalidated
              at
      org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:1011)
              at
      org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:109)
              at
      com.icesoft.faces.webapp.http.servlet.ServletSessionMap.getAttribute(ServletSessionMap.java:19)
              at
      com.icesoft.faces.context.AbstractAttributeMap.containsKey(AbstractAttributeMap.java:94)
              at
      com.icesoft.faces.application.D2DViewHandler.getContextServletTables(D2DViewHandler.java:314)
              at
      com.icesoft.faces.application.D2DViewHandler.getContextServletTable(D2DViewHandler.java:325)
              at
      com.icesoft.faces.application.D2DViewHandler.clearSession(D2DViewHandler.java:602)
              at
      com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:246)
              at
      com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:149)
              at
      com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
              at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:268)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
              at
      com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.render(PersistentFacesState.java:124)
              at com.icesoft.faces.async.render.RunnableRender.run(RunnableRender.java:89)
              at
      edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:643)
              at
      edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:668)
              at java.lang.Thread.run(Thread.java:595)

        Activity

        Hide
        Jack Van Ooststroom added a comment -

        Changed Assignee Priority to P1 and assigned to me

        Show
        Jack Van Ooststroom added a comment - Changed Assignee Priority to P1 and assigned to me
        Hide
        Jack Van Ooststroom added a comment -

        Oops, I meant P2

        Show
        Jack Van Ooststroom added a comment - Oops, I meant P2
        Hide
        Jack Van Ooststroom added a comment -

        Changed Assignee Priority to P1

        Show
        Jack Van Ooststroom added a comment - Changed Assignee Priority to P1
        Hide
        Jack Van Ooststroom added a comment -

        This case seems to have been around for a long time. I tried to reproduce it using Auction Monitor as it uses the IntervalRenderer. I tried numerous scenarios and added a bunch of logging around throwing the TransientRenderingExceptions and FatalRenderingExceptions. This issue doesn't seem to happen anymore. Closing this one and marking it as "Cannot Reproduce".

        Show
        Jack Van Ooststroom added a comment - This case seems to have been around for a long time. I tried to reproduce it using Auction Monitor as it uses the IntervalRenderer. I tried numerous scenarios and added a bunch of logging around throwing the TransientRenderingExceptions and FatalRenderingExceptions. This issue doesn't seem to happen anymore. Closing this one and marking it as "Cannot Reproduce".

          People

          • Assignee:
            Unassigned
            Reporter:
            Mark Collette
          • Votes:
            2 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: