fix(scripted-alarms): resolve Medium code-review finding (Core.ScriptedAlarms-002)
Dispose any existing _shelvingTimer before reassigning it inside LoadAsync so that a second LoadAsync call does not leak the old timer and leave two timers running concurrently against the same engine state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -165,6 +165,11 @@ public sealed class ScriptedAlarmEngine : IDisposable
|
||||
_loaded = true;
|
||||
_engineLogger.Information("ScriptedAlarmEngine loaded {Count} alarm(s)", _alarms.Count);
|
||||
|
||||
// Dispose any previously-created timer before reassigning; a second LoadAsync
|
||||
// call without this would leave two timers firing against the same engine.
|
||||
// (Core.ScriptedAlarms-002)
|
||||
_shelvingTimer?.Dispose();
|
||||
|
||||
// Start the shelving-check timer — ticks every 5s, expires any timed shelves
|
||||
// that have passed their UnshelveAtUtc.
|
||||
_shelvingTimer = new Timer(_ => RunShelvingCheck(),
|
||||
|
||||
Reference in New Issue
Block a user