Uploaded image for project: 'ZK Spreadsheet'
  1. ZK Spreadsheet
  2. ZSS-1363

a session expiration causes an IllegalStateException

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Normal
    • Resolution: Fixed
    • Affects Version/s: 3.9.1
    • Fix Version/s: 3.9.4
    • Component/s: ZSS App
    • Security Level: Jimmy
    • Labels:
      None

      Description

      Steps to Reproduce

      1. run zss app
      2. set a shorter session time out, e.g. 30s
      3. wait for time out happens

      Current Result

      15-May-2018 23:36:38.406 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.zkoss.zk.ui.impl.DesktopImpl.invokeDesktopCleanups Failed to invoke org.zkoss.zss.app.ui.AppCtrl$10@3299c9
      java.lang.IllegalStateException: Not in an execution
      at org.zkoss.zk.ui.event.impl.EventQueueProviderImpl.lookup(EventQueueProviderImpl.java:58)
      at org.zkoss.zkmax.ui.event.impl.EventQueueProviderImpl.lookup(EventQueueProviderImpl.java:57)
      at org.zkoss.zk.ui.event.EventQueues.lookup(EventQueues.java:130)
      at org.zkoss.zss.model.impl.EventQueueListenerAdaptor.removeEventListener(EventQueueListenerAdaptor.java:64)
      at org.zkoss.zss.model.impl.BookImpl.removeEventListener(BookImpl.java:733)
      at org.zkoss.zss.ui.Spreadsheet.initBook0(Spreadsheet.java:768)
      at org.zkoss.zss.ui.Spreadsheet.setSBook(Spreadsheet.java:679)
      at org.zkoss.zss.ui.Spreadsheet.setBook(Spreadsheet.java:6253)
      at org.zkoss.zss.app.ui.AppCtrl.doCloseBook(AppCtrl.java:555)
      at org.zkoss.zss.app.ui.AppCtrl.doCloseBook(AppCtrl.java:550)
      at org.zkoss.zss.app.ui.AppCtrl.access$300(AppCtrl.java:72)
      at org.zkoss.zss.app.ui.AppCtrl$10.cleanup(AppCtrl.java:284)
      at org.zkoss.zk.ui.impl.DesktopImpl.invokeDesktopCleanups(DesktopImpl.java:1336)
      at org.zkoss.zk.ui.impl.SimpleDesktopCache.desktopDestroyed(SimpleDesktopCache.java:142)
      at org.zkoss.zk.ui.impl.SimpleDesktopCache.stop(SimpleDesktopCache.java:225)
      at org.zkoss.zk.ui.impl.SessionDesktopCacheProvider.sessionDestroyed(SessionDesktopCacheProvider.java:60)
      at org.zkoss.zk.ui.impl.AbstractWebApp.sessionDestroyed(AbstractWebApp.java:374)
      at org.zkoss.zk.ui.http.WebManager.sessionDestroyed(WebManager.java:456)
      at org.zkoss.zk.ui.http.HttpSessionListener23.sessionDestroyed(HttpSessionListener23.java:55)
      at org.apache.catalina.session.StandardSession.expire(StandardSession.java:824)
      at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:682)
      at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:552)
      at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:537)
      at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5572)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1388)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
      at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1360)

      Expected Result

      no exception

        Issue Links

          Activity

          Hide
          hawk hawk added a comment -

          Root cause

          can't call Spreadsheet's setter when a desktop is destroyed.
          Currently, zk doesn't allow to get an application scope event queue without a session.

          solution

          AppCtrl.doCloseBook() does many status updates, but most of them are not necessary when a desktop is destroyed because everything will be reset when reloading/session expiration. So I just remove that method calling.

          Show
          hawk hawk added a comment - Root cause can't call Spreadsheet's setter when a desktop is destroyed. Currently, zk doesn't allow to get an application scope event queue without a session. solution AppCtrl.doCloseBook() does many status updates, but most of them are not necessary when a desktop is destroyed because everything will be reset when reloading/session expiration. So I just remove that method calling.

            People

            • Assignee:
              hawk hawk
              Reporter:
              hawk hawk
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: