mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-06-11 11:06:24 +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()
|
cursor = conn.cursor()
|
||||||
now = datetime.now().isoformat()
|
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('''
|
cursor.execute('''
|
||||||
UPDATE errors
|
UPDATE errors
|
||||||
SET resolved_at = ?
|
SET resolved_at = ?,
|
||||||
|
resolution_type = COALESCE(resolution_type, 'auto'),
|
||||||
|
resolution_reason = ?
|
||||||
WHERE error_key = ? AND resolved_at IS NULL
|
WHERE error_key = ? AND resolved_at IS NULL
|
||||||
''', (now, error_key))
|
''', (now, reason, error_key))
|
||||||
|
|
||||||
if cursor.rowcount > 0:
|
if cursor.rowcount > 0:
|
||||||
self._record_event(cursor, 'resolved', error_key, {'reason': reason})
|
self._record_event(cursor, 'resolved', error_key, {'reason': reason})
|
||||||
|
|||||||
Reference in New Issue
Block a user