From e6865a1bc6bea7bbd9a4186527d1d621627a1410 Mon Sep 17 00:00:00 2001 From: Timmy Date: Thu, 14 May 2026 22:33:14 +0100 Subject: [PATCH] fix: stop event-triggers Lagged handler from re-emitting via the same channel Merge 1061 added a replay_current_pipeline_state() call to the broadcast::Lagged branch, but replay broadcasts one event per CRDT item (~997) into a 256-slot channel, deterministically re-overflowing it and triggering another Lagged. The loop pinned CPU and likely caused today's machine crash. Revert to the pre-1061 behaviour of logging and continuing. Co-Authored-By: Claude Opus 4.7 (1M context) --- server/src/startup/tick_loop.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/startup/tick_loop.rs b/server/src/startup/tick_loop.rs index 0fc6fa6e..c95c5350 100644 --- a/server/src/startup/tick_loop.rs +++ b/server/src/startup/tick_loop.rs @@ -330,9 +330,8 @@ pub(crate) fn spawn_event_trigger_subscriber( Ok(f) => f, Err(broadcast::error::RecvError::Lagged(n)) => { crate::slog!( - "[event-triggers] Lagged {n} transition events; replaying pipeline state to recover" + "[event-triggers] Lagged {n} transition events; some triggers may have been skipped" ); - crate::pipeline_state::replay_current_pipeline_state(); continue; } Err(broadcast::error::RecvError::Closed) => {