Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-2702

Server push crash since a pair of execution activate and deactive were called

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Normal Normal
    • 7.0.5.1
    • 7.0.4
    • None
    • None
    • ZK 7.0.5.1

      after a pair of executions' activate and deactive were called, using mechanism of server push event queue will cause illegalStateException.

      java.lang.IllegalStateException: Before calling Executions.schedule(), the server push must be enabled for [Desktop z_tcr:/index.zul]
      	at org.zkoss.zk.ui.impl.DesktopImpl.checkSeverPush(DesktopImpl.java:1496)
      	at org.zkoss.zk.ui.impl.DesktopImpl.scheduleServerPush(DesktopImpl.java:1472)
      	at org.zkoss.zk.ui.Executions.schedule(Executions.java:870)
      	at org.zkoss.zk.ui.event.impl.ServerPushEventQueue$DesktopInfo.publish(ServerPushEventQueue.java:158)
      	at org.zkoss.zk.ui.event.impl.ServerPushEventQueue$DesktopInfo.access$000(ServerPushEventQueue.java:138)
      	at org.zkoss.zk.ui.event.impl.ServerPushEventQueue.publish(ServerPushEventQueue.java:54)
      	at org.zkoss.zss.model.impl.EventQueueListenerAdaptor.sendModelEvent(EventQueueListenerAdaptor.java:76)
      	at org.zkoss.zss.model.impl.BookImpl.sendModelEvent(BookImpl.java:203)
      	at org.zkoss.zss.range.impl.NotifyChangeHelper.notifyCustomEvent(NotifyChangeHelper.java:209)
      	at org.zkoss.zss.range.impl.RangeImpl$48.invoke(RangeImpl.java:1591)
      	at org.zkoss.zss.model.util.ReadWriteTask.doInWriteLock(ReadWriteTask.java:43)
      	at org.zkoss.zss.range.impl.RangeImpl.notifyCustomEvent(RangeImpl.java:1597)
      	at org.zkoss.zss.ui.Spreadsheet.moveSelfEditorFocus(Spreadsheet.java:697)
      	at org.zkoss.zss.ui.Spreadsheet.doMoveSelfFocus(Spreadsheet.java:707)
      	at org.zkoss.zss.ui.Spreadsheet.access$52(Spreadsheet.java:706)
      	at org.zkoss.zss.ui.Spreadsheet$5.onEvent(Spreadsheet.java:788)
      	at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2752)
      	at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2723)
      	at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2664)
      	at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136)
      	at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1765)
      	at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1550)
      	at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1260)
      	at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:611)
      	at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:485)
      	at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:494)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      	at org.mortbay.jetty.Server.handle(Server.java:326)
      	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
      	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
      	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
      	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
      	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
      	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
      	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
      

      extra information:
      it's because desktop itself wasn't added into existing subscription enabler list, so that calling deactivate will also turn off server push.

      we should fix statement at ServerPushEventQueue$DesktopInfo

      desktop.enableServerPush(true);
      

      with

      ((DesktopImpl)desktop).enableServerPush(true, this);
      

            jumperchen jumperchen
            JerryChen JerryChen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 6 hours
                6h