Hi,
At the moment, the watchdog’s retry interval and max retry parameters are hardcoded.
WATCHDOG_THROTTLE_PERIOD = timedelta(minutes=30)
WATCHDOG_THROTTLE_MAX_CALLS = 10
Some addons may hit this limit very easily. I disconnected my Zigbee coordinator for 30 seconds and Zigbee2MQTT never restarted on its own, logs showed:
2025-05-29 14:15:20.969 ERROR (MainThread) [asyncio] Task exception was never retrieved
future: <Task finished name='Task-93912' coro=<Addon.watchdog_container() done, defined at /usr/src/supervisor/supervisor/addons/addon.py:1586> exception=AddonsJobError('Rate limit exceeded, more than 10 calls in 0:30:00')>
Traceback (most recent call last):
File "/usr/src/supervisor/supervisor/addons/addon.py", line 1600, in watchdog_container
await self._restart_after_problem(event.state)
File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 291, in wrapper
raise on_condition(
f"Rate limit exceeded, more than {self.throttle_max_calls} calls in {self.throttle_period(group_name)}",
)
supervisor.exceptions.AddonsJobError: Rate limit exceeded, more than 10 calls in 0:30:00
Would it be possible to make these values configurable please? Alternatively, could you implement exponential backoff?
This feature had already been requested here but maybe that was not the right place.