mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-08-27 12:30:13 +03:00
NotificationQueue.get only generated a synthetic ping when the queue was idle for the full timeout. Under sustained event load (e.g. a project with markers matching at 15-260 events/s) the queue never idled, so compute notification streams never carried a ping and the controller stopped emitting compute.updated: clients lost compute statistics until the event flow paused or the server restarted. A ping is now guaranteed at least every timeout seconds regardless of event flow: when the ping deadline is reached the next get() returns a ping ahead of queued events (pings only carry statistics, so skipping ahead of real events is harmless). Both the compute stream (compute CPU/memory/disk stats -> compute.updated) and the controller stream (idle keepalive) benefit.