Steps to Reproduce
- Add in zk.xml
<system-config> <failover-manager-class>org.zkoss.zktest.test.DumbFailoverManager</failover-manager-class> </system-config>
- Run zktest/test/failover.zul
- Click the "kill desktop but recoverable" button.
- Input "Tom" in the textbox.
- Click the "Enter" button.
Current Result
Lots of exceptions. The desktop recovering was broken for a long time.
Expected Result
The message box with "Hi, Tom" should appear instead of a timeout warning.
Debug Information
The desktop ID is not started with "g" anymore.
After calling setId() in recovering, it would remove then add the desktop.
https://github.com/zkoss/zk/blob/v8.6.1/zk/src/org/zkoss/zk/ui/impl/DesktopImpl.java#L943,L950
When a desktop is destroying, _rque is null.
https://github.com/zkoss/zk/blob/v8.6.1/zk/src/org/zkoss/zk/ui/impl/DesktopImpl.java#L987
When destroying, the current execution will set as null even in recovering (which shouldn't in this case)
https://github.com/zkoss/zk/blob/v8.6.1/zk/src/org/zkoss/zk/ui/impl/SimpleDesktopCache.java#L169
Since this recovered desktop is not considered alive, there would be a lot of troubles.
https://github.com/zkoss/zk/blob/v8.6.1/zk/src/org/zkoss/zk/ui/impl/DesktopImpl.java#L980
Workaround
- relates to
-
ZK-4205 inconsistent parameter names (dead/obsolete code?)
- Closed