From 045dec233aa8f678ea491f99138abb574e4fe627 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Wed, 16 Apr 2025 10:34:14 +0200 Subject: [PATCH] system: add logging to state kills and polish comments #8548 --- src/etc/rc.syshook.d/monitor/20-recover | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/etc/rc.syshook.d/monitor/20-recover b/src/etc/rc.syshook.d/monitor/20-recover index 4a48f2500..f22f7db80 100755 --- a/src/etc/rc.syshook.d/monitor/20-recover +++ b/src/etc/rc.syshook.d/monitor/20-recover @@ -37,19 +37,21 @@ $affected_gateways = !empty($argv[1]) ? explode(',', $argv[1]) : []; $metered_found_prios = ['inet' => 256, 'inet6' => 256]; $metered_gws = ['inet' => [], 'inet6' => []]; + foreach (return_gateways_status() as $status) { if ($status['status'] == 'down') { - /* try to recover monitors stuck in down state ignoring "force_down" */ + /* recover monitors stuck in down state ignoring "force_down" */ $gwnames[] = $status['name']; if (!empty($status['monitor_killstates']) && in_array($status['name'], $affected_gateways)) { - configdp_run('filter kill gateway_states', [$status['gateway']], true); + $uuid = trim(configdp_run('filter kill gateway_states', [$status['gateway']], true)); + log_msg("ROUTING: killing states for unreachable gateway {$status['name']} [$uuid]", LOG_NOTICE); } } elseif ($status['status'] != 'force_down') { - /* collect "metered" gateways which should be killed depending priority */ + /* collect "metered" gateways for all non-down status reports */ if (!empty($status['monitor_killstates_priority'])) { $metered_gws[$status['ipprotocol']][] = $status; + /* only consider currently affected gateways as priority candidates */ } elseif (in_array($status['name'], $affected_gateways)) { - /* only trigger on "up" events to calculate highest prio */ $metered_found_prios[$status['ipprotocol']] = min($status['priority'], $metered_found_prios[$status['ipprotocol']]); } } @@ -59,7 +61,8 @@ foreach ($metered_found_prios as $ipproto => $metered_found_prio) { /* kill states for "metered" gateways */ foreach ($metered_gws[$ipproto] as $status) { if ($status['priority'] > $metered_found_prio) { - configdp_run('filter kill gateway_states', [$status['gateway']], true); + $uuid = trim(configdp_run('filter kill gateway_states', [$status['gateway']], true)); + log_msg("ROUTING: killing states for deferred gateway {$status['name']} [$uuid]", LOG_NOTICE); } } }