mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-06-03 13:54:41 +00:00
Persist resolution_reason on resolve_error so the audit log is useful
The UPDATE in `_resolve_error_impl` only touched `resolved_at` — the `reason` argument every caller passes was silently dropped, and the `resolution_reason` / `resolution_type` columns stayed NULL for every auto-resolved error. The columns were added back in a previous sprint for exactly this audit-log purpose, but the writer was never updated to populate them. Fix the SQL to write `resolution_reason = ?` and tag `resolution_type = COALESCE(existing, 'auto')` so admin-cleared errors (whose type is set elsewhere) keep their value while the default auto path correctly labels itself. Verified end-to-end on the lab host: re-injected the `disk_nvme2n1` warning, waited one scan cycle, the row now reads `resolution_type='auto'` and `resolution_reason='Transient I/O cleared, SMART now reports healthy'` — previously these columns stayed NULL even though the resolve_error call passed a descriptive reason. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
@@ -1 +1 @@
|
||||
dc0f267de13f20ba7035df442ddaa22bea6e4d26cbaa542a5246ba88c796ffad
|
||||
6f083dbae1558612f5036a0a10a9ded23024ae86dfd7914393f7e3d5d11ae853
|
||||
|
||||
@@ -673,11 +673,21 @@ class HealthPersistence:
|
||||
cursor = conn.cursor()
|
||||
now = datetime.now().isoformat()
|
||||
|
||||
# Persist `reason` into the dedicated resolution_reason column
|
||||
# (and tag resolution_type='auto' so the audit log can tell
|
||||
# auto-resolves apart from explicit admin clears). Previously
|
||||
# this UPDATE only touched resolved_at, so the `reason` arg
|
||||
# every caller passes — including the new
|
||||
# `_reconcile_stale_disk_warnings` pass — was silently dropped
|
||||
# and the resolution_reason column stayed NULL for every
|
||||
# auto-resolved error.
|
||||
cursor.execute('''
|
||||
UPDATE errors
|
||||
SET resolved_at = ?
|
||||
SET resolved_at = ?,
|
||||
resolution_type = COALESCE(resolution_type, 'auto'),
|
||||
resolution_reason = ?
|
||||
WHERE error_key = ? AND resolved_at IS NULL
|
||||
''', (now, error_key))
|
||||
''', (now, reason, error_key))
|
||||
|
||||
if cursor.rowcount > 0:
|
||||
self._record_event(cursor, 'resolved', error_key, {'reason': reason})
|
||||
|
||||
Reference in New Issue
Block a user