gsxdsm
9ba75598c3
fix: auto-recover orphaned heartbeat runs from crashed processes
...
When the dashboard crashes mid-heartbeat, the agentRuns row is left in
status='active' forever. HeartbeatTriggerScheduler.onTimerTick treats
any active run as "still running" and skips every subsequent tick, so
agents go silent indefinitely (observed: 6+ hours). The existing
in-memory missed-heartbeat watchdog can't help — its trackedAgents map
is wiped on process restart.
SelfHealingManager.recoverStaleHeartbeatRuns now reconciles these on
startup and during periodic maintenance: terminates active runs whose
processPid does not match the current process, has no recorded pid, or
has been active for more than 6 hours.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 14:13:07 -07:00
..
2026-05-03 09:51:43 -07:00
2026-05-05 13:32:10 -07:00
2026-04-28 14:25:56 -07:00
2026-04-08 13:31:07 -07:00
2026-04-19 10:13:34 -07:00
2026-04-23 23:02:36 -07:00
2026-04-08 01:39:15 -07:00
2026-04-30 10:19:54 -07:00
2026-05-05 14:13:07 -07:00
2026-05-02 13:24:37 -07:00
2026-05-02 13:32:47 -07:00
2026-04-09 15:14:19 -07:00
2026-04-27 17:46:05 -07:00
2026-05-03 02:02:25 -07:00
2026-04-15 16:32:16 -07:00
2026-05-01 22:38:37 -07:00
2026-03-25 18:32:10 -04:00
2026-05-04 19:05:48 -07:00
2026-05-04 19:05:48 -07:00
2026-05-01 09:14:10 -07:00
2026-05-03 16:51:01 -07:00
2026-04-24 08:55:02 -07:00
2026-04-24 12:14:56 -07:00
2026-05-05 12:01:53 -07:00
2026-05-04 06:12:12 -07:00
2026-05-03 14:10:11 -07:00
2026-04-23 23:02:36 -07:00
2026-05-05 13:42:39 -07:00
2026-05-05 12:01:53 -07:00
2026-05-05 13:32:10 -07:00
2026-04-23 23:02:35 -07:00
2026-05-03 02:02:25 -07:00
2026-04-28 14:25:55 -07:00
2026-04-29 07:10:52 -07:00
2026-05-05 12:01:53 -07:00
2026-05-03 02:36:07 -07:00
2026-05-03 02:36:07 -07:00
2026-05-04 23:47:26 -07:00
2026-04-24 08:54:25 -07:00
2026-05-05 06:32:33 -07:00
2026-04-19 20:48:14 -07:00
2026-05-05 06:32:33 -07:00
2026-05-04 13:43:22 -07:00
2026-05-03 15:13:08 -07:00
2026-05-05 06:32:33 -07:00
2026-05-05 06:32:34 -07:00
2026-04-29 07:58:58 -07:00
2026-05-01 23:26:14 -07:00
2026-05-04 09:51:54 -07:00
2026-04-17 14:09:37 -07:00
2026-04-28 18:21:17 -07:00
2026-04-18 12:21:14 -07:00
2026-04-08 14:58:34 -07:00
2026-04-28 14:25:55 -07:00
2026-05-04 23:47:26 -07:00
2026-05-01 12:25:44 -07:00
2026-05-05 06:32:34 -07:00
2026-05-03 02:02:25 -07:00
2026-05-02 13:24:37 -07:00
2026-05-03 07:24:14 -07:00
2026-05-03 02:02:25 -07:00
2026-04-30 21:20:56 -07:00
2026-04-19 20:48:13 -07:00
2026-05-04 21:21:22 -07:00
2026-05-04 22:17:10 -07:00
2026-05-03 09:11:04 -07:00
2026-04-15 17:06:36 -07:00
2026-04-13 08:57:48 -07:00
2026-04-23 23:02:36 -07:00
2026-04-13 08:57:48 -07:00
2026-05-03 02:02:25 -07:00
2026-04-16 23:07:40 -07:00
2026-04-17 12:13:39 -07:00
2026-04-23 23:02:35 -07:00
2026-05-05 13:42:39 -07:00
2026-04-27 22:40:08 -07:00
2026-04-29 12:02:56 -07:00
2026-04-29 07:58:58 -07:00
2026-05-05 13:32:10 -07:00
2026-04-08 11:21:18 -07:00
2026-04-28 17:21:12 -07:00
2026-04-24 08:54:25 -07:00
2026-04-29 12:02:56 -07:00
2026-04-25 21:43:38 -07:00
2026-05-05 13:42:39 -07:00