-
-
Notifications
You must be signed in to change notification settings - Fork 36.3k
Add exception handling for rate limited or unauthorized MQTT requests #158997
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add exception handling for rate limited or unauthorized MQTT requests #158997
Conversation
When this error ocurrs the primary thing we want to do is stop the integration from retrying. We can't tell the difference between rate limiting or invalid credentials, but we do know that reauthenticating will resolve the issue.
|
Hey there @Lash-L, mind taking a look at this pull request as it has been labeled with an integration ( Code owner commandsCode owners of
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds exception handling for MQTT connection failures that occur when Roborock's MQTT servers reject connections due to rate limiting or invalid credentials. The change triggers a reauthentication flow to allow users to resolve the issue.
Key Changes
- Added exception handling for
MqttSessionUnauthorizedto trigger reauthentication - Created a user-friendly, actionable error message explaining rate limiting and credential issues
- Extended test coverage to verify both credential and MQTT unauthorized errors trigger reauth
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
homeassistant/components/roborock/__init__.py |
Added exception handler for MqttSessionUnauthorized that raises ConfigEntryAuthFailed to trigger reauthentication flow |
homeassistant/components/roborock/strings.json |
Added mqtt_unauthorized exception message explaining the rate limiting/credentials issue and resolution options |
tests/components/roborock/test_init.py |
Parameterized existing reauth test to cover both RoborockInvalidCredentials and MqttSessionUnauthorized exceptions |
| translation_key="no_user_agreement", | ||
| ) from err | ||
| except MqttSessionUnauthorized as err: | ||
| raise ConfigEntryAuthFailed( |
Copilot
AI
Dec 14, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ConfigEntryAuthFailed instantiation is missing the first positional message argument. This is inconsistent with the RoborockInvalidCredentials exception handler above (lines 81-85) which includes "Invalid credentials" as the first argument. For consistency and to ensure proper error reporting, add a descriptive message as the first argument.
| raise ConfigEntryAuthFailed( | |
| raise ConfigEntryAuthFailed( | |
| "MQTT session unauthorized", |
jbouwh
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM,
Thanks @allenporter 👍
When this error ocurrs the primary thing we want to do is stop the integration from retrying. We can't tell the difference between rate limiting or invalid credentials, but we do know that reauthenticating will resolve the issue.
Proposed change
Add exception handling for rate limited / expired MQTT requests and record a better translated error with the option to start re-authentication to resolve.
Type of change
Additional information
Checklist
ruff format homeassistant tests)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest.requirements_all.txt.Updated by running
python3 -m script.gen_requirements_all.To help with the load of incoming pull requests: