diff --git a/lib/openhab/dsl/timers/manager.rb b/lib/openhab/dsl/timers/manager.rb index f5f9590fd..f59b11425 100644 --- a/lib/openhab/dsl/timers/manager.rb +++ b/lib/openhab/dsl/timers/manager.rb @@ -70,9 +70,9 @@ def reentrant_timer(id:, &block) def delete(timer) logger.trace("Removing #{timer} from timers") @timers.delete(timer) - if timer.respond_to? :id - @timer_ids[timer.id]&.delete(timer) - @timer_ids.delete(timer.id) unless @timer_ids[timer.id].any? + if timer.respond_to?(:id) && (timers = @timer_ids[timer.id]) + timers.delete(timer) + @timer_ids.delete(timer.id) if timers.empty? end @reentrant_timers.delete(timer.reentrant_id) if timer.respond_to? :reentrant_id end