From ecb2968db61c4a9b26507fbc9bafe0411f5cf4bc Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 29 Jun 2026 14:40:09 +0100 Subject: [PATCH] make bridge gone away message less alarming --- bridge_master.py | 2 +- docs/v1x-codex-changelog.md | 3 +++ tests/test_deterministic_harness.py | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/bridge_master.py b/bridge_master.py index 8b8311c..c9cf353 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -576,7 +576,7 @@ def reset_static_tg(tg,ts,_tmout,system): BRIDGES[str(tg)] = bridgetemp except KeyError: - logger.exception('(%s) KeyError in reset_static_tg() - bridge gone away? TG: %s',system,tg) + logger.debug('(%s) reset_static_tg() skipped - bridge already removed for TG: %s',system,tg) return #def reset_default_reflector(reflector,_tmout,system): diff --git a/docs/v1x-codex-changelog.md b/docs/v1x-codex-changelog.md index 0ea4f58..bc490db 100644 --- a/docs/v1x-codex-changelog.md +++ b/docs/v1x-codex-changelog.md @@ -106,6 +106,9 @@ names or new report event fields. - Expected dashboard impact is low if the dashboard reads event fields and bridge entries by their existing keys. +- Downgraded the expected stale static-bridge reset message from an error + traceback to a debug log when options reload finds that a bridge key has + already been removed. - Compatibility risk: `BRIDGE_SND` pickled bridge state may now include active TS1 `#reflector` entries. A dashboard that assumes every `#reflector` entry is TS2-only may need an update; a dashboard that already respects `TS`, `TGID` diff --git a/tests/test_deterministic_harness.py b/tests/test_deterministic_harness.py index 56fe485..2d4ecc0 100644 --- a/tests/test_deterministic_harness.py +++ b/tests/test_deterministic_harness.py @@ -1627,6 +1627,18 @@ DEFAULT_DIAL_TS2: 92 self.assertEqual(entries[1], original_b) self.assertEqual(entries[2], original_c) + def test_reset_static_tg_missing_bridge_logs_debug_only(self): + config = minimal_config(("MASTER-A",)) + + with DeterministicScenario(config=config) as scenario: + with self.assertLogs(scenario.bm.logger, level="DEBUG") as logs: + scenario.bm.reset_static_tg(23427, 2, 10, "MASTER-A") + + output = "\n".join(logs.output) + self.assertIn("reset_static_tg() skipped - bridge already removed", output) + self.assertNotIn("ERROR", output) + self.assertNotIn("Traceback", output) + def test_remove_bridge_system_preserves_reflector_activation_trigger(self): config = minimal_config(("MASTER-A", "MASTER-B")) add_openbridge_system(config, "OBP-1", network_id=3001)