YueGuobin e98c51889e
fix: notification ping starved under sustained event load
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.
2026-08-22 00:50:49 +08:00
..
2024-11-18 11:46:42 +10:00
2021-04-13 18:46:50 +09:30
2021-04-17 18:36:32 +09:30
2023-01-05 12:38:00 +08:00
2021-12-02 18:07:09 +10:30
2026-08-18 18:05:56 +02:00
2021-04-13 18:46:50 +09:30
2021-04-13 18:37:58 +09:30
2021-04-13 18:46:50 +09:30