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

asynch invalidate() causing client error

    XMLWordPrintable

Details

    • ZK 7.0.7

    Description

      when using Server push it is possible, that the "dummy" request and a user event arrive with the same AU-request. A client side error happens, when the asynch operation invalidates a component which then gets detached by the user event.

      The attached example simulates that case invalidating and removing a div at roughly the same time, the error happens around 95% of the time. In a rare cases the "echo" and "dummy" command are sent in separate AU-requests (then there is no problem).

      The server side cause of the Client error lies in the implementation of:
      org.zkoss.zk.au.AuResponse.JSONComponent.toJSONString() which will send "null" to the client.
      At the client side the the "outer" function (see screenshot) cannot handle null values, causing errors.

      Questions is if the null should be prevented on the server side or checked on the client side (possibly other AuResponses are affected too besides Invalidate/Outer)

      Attachments

        1. 2015-07-23_1947.png
          28 kB
          cor3000
        2. concurrentRemoveInvalidate.zul
          0.1 kB
          cor3000
        3. ConcurrentRemoveInvalidateController.java
          2 kB
          cor3000

        Issue Links

          Activity

            People

              jumperchen jumperchen
              cor3000 cor3000
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 1 hour, 30 minutes
                  1h 30m