mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-17 19:36:28 +02:00
Fix duplicate HMS error notifications from race condition
Move _notified_hms_errors tracking update before the async notification send to prevent concurrent status callbacks from both seeing the same errors as new. This mirrors the existing milestone tracking pattern which correctly updates before the await.
This commit is contained in:
+3
-2
@@ -410,6 +410,9 @@ async def on_printer_status_change(printer_id: int, state: PrinterState):
|
||||
# Find new errors that haven't been notified yet
|
||||
new_error_codes = current_error_codes - previously_notified
|
||||
|
||||
# Update tracking immediately to prevent duplicate notifications from concurrent callbacks
|
||||
_notified_hms_errors[printer_id] = current_error_codes
|
||||
|
||||
if new_error_codes:
|
||||
# Get the actual new errors for the notification
|
||||
# Filter to severity >= 2 (skip informational/status messages like H2D sends)
|
||||
@@ -480,8 +483,6 @@ async def on_printer_status_change(printer_id: int, state: PrinterState):
|
||||
except Exception as e:
|
||||
logging.getLogger(__name__).warning(f"HMS error notification failed: {e}")
|
||||
|
||||
# Update tracking with all current errors
|
||||
_notified_hms_errors[printer_id] = current_error_codes
|
||||
else:
|
||||
# No HMS errors - clear tracking so future errors get notified
|
||||
if printer_id in _notified_hms_errors:
|
||||
|
||||
Reference in New Issue
Block a user