Fix monitor loop double-sleep on error; add grep -F regression test
Lint / Python (flake8) (push) Successful in 49s
Lint / JS (eslint) (push) Successful in 9s
Security / Python Security (bandit) (push) Successful in 42s
Test / Python Tests (pytest) (push) Successful in 51s
Lint / Notify on failure (push) Has been skipped
Lint / Deploy (push) Successful in 3s
Lint / Python (flake8) (push) Successful in 49s
Lint / JS (eslint) (push) Successful in 9s
Security / Python Security (bandit) (push) Successful in 42s
Test / Python Tests (pytest) (push) Successful in 51s
Lint / Notify on failure (push) Has been skipped
Lint / Deploy (push) Successful in 3s
On exception the monitor slept 30s inside the except block then fell through to time.sleep(poll_interval), giving a 150s recovery gap instead of 30s. Adding continue after the error sleep fixes this. Also adds a regression test asserting dmesg filtering uses grep -F -- so a future refactor cannot silently reintroduce the regex wildcard bug. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -970,6 +970,7 @@ class NetworkMonitor:
|
||||
except Exception as e:
|
||||
logger.error(f'Monitor loop error: {e}', exc_info=True)
|
||||
time.sleep(30)
|
||||
continue
|
||||
|
||||
time.sleep(self.poll_interval)
|
||||
|
||||
|
||||
@@ -36,6 +36,12 @@ class TestBuildSshCommand:
|
||||
cmd = DiagnosticsRunner.build_ssh_command('10.0.0.1', 'eth0')
|
||||
assert 'ethtool' in cmd
|
||||
|
||||
def test_dmesg_uses_fixed_string_grep(self):
|
||||
# grep -F prevents iface names with dots (e.g. eth0.1) being treated as
|
||||
# regex wildcards; -- prevents leading - from being parsed as a flag
|
||||
cmd = DiagnosticsRunner.build_ssh_command('10.0.0.1', 'eth0')
|
||||
assert 'grep -F --' in cmd
|
||||
|
||||
|
||||
# ── parse_output ─────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
Reference in New Issue
Block a user