Steps to Reproduce
- click the button
it simulates session logout/timeout from a different thread (browser tab/background process)
Current Result
2024-05-10 12:49:17 [WARN ] AbstractComponent:3125 - Page [Page g0pO_] was destroyed because desktop was destroyed.
It is usually caused by invalidating the native session directly. If it is required, please set Attributes.RENEW_NATIVE_SESSION first.
>> handle onDummy
Expected Result
- don't print the warning log
- don't invoke the event listener since the session expired and its desktop should be invalid, so running the event listener has no meaning
Debug Information
- in the customer environment, this caused 240,000 log entries within 2 minutes producing ~100MB of log files, and CPU spikes during that time.
- in a real case, a system shuts down and enforce to invalidate all user sessions but because of handling events and writing logs, the system cannot shut down immediately.. Most of these events were PropertyChangeEvents or internal onBindInit/onBindClear events
- another case, a user might be reported as an illegal user, the admin needs to enforce to invalidate his session, but ZK will still process the session's events.
Root Cause
AbstractComponent.service()
/*package*/ void service(Event event, Scope scope, final List<EventListenerInfo> listeners, final EventHandler evthd, final Method mtd, boolean skipPageListener) throws Exception { final Execution exec = Executions.getCurrent(); final Desktop desktop = exec.getDesktop(); final Page page = _page != null ? _page : desktop.getFirstPage(); if (page == null || !page.isAlive()) { String msg = (page == null ? "No page is available in " + desktop : "Page " + page + " was destroyed"); if (desktop.isAlive()) msg += " (but desktop is alive)"; else msg += " because desktop was destroyed.\n" + "It is usually caused by invalidating the native session directly. " + "If it is required, please set Attributes.RENEW_NATIVE_SESSION first."; log.warn(msg); }
Workaround
- relates to
-
ZK-5730 Harden smartUpdate to check for null desktop or null webapp
- Closed