-
-
Notifications
You must be signed in to change notification settings - Fork 29.9k
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
Fix harmony failing to switch activities when a switch is in progress #47212
Fix harmony failing to switch activities when a switch is in progress #47212
Conversation
Hey there @ehendrix23, @bramkragten, @mkeesey, mind taking a look at this pull request as its been labeled with an integration ( |
I'll be able to take a look at this tonight Denver time. |
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
…#47212) Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
tl;dr - The locking implementation seems reasonable and this seems fine. This also works fine locally. I'm not fast enough to trigger the original problem on the old code (and didn't really feel like I needed to write a huge test for it), but seems fine. I think this will work fine for what you are trying to fix (one activity start followed very quickly by another), but will probably have surprising behavior if more than two go in flight at once since order will probably not be preserved by the lock (the second activity might start "last" even if a third is submitted because of lock fairness). Don't think we need to go down the road of using a queue though unless it really comes up a lot. |
If we switch to a queue for this so we could discard all but the last one when the user hits the wrong one multiple times. That would definitely be an improvement but seems unlikely to happen |
Proposed change
Fix harmony failing to switch activities when a switch is in progress
If an activity switch was in progress and another one is asked for, the
second switch would be dropped. This is most apparent when switching with
HomeKit since HomeKit restores the last activity, and then its impossible to
switch to another one because the switch is in progress already.
Type of change
Example entry for
configuration.yaml
:# Example configuration.yaml
Additional information
Checklist
black --fast 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
..coveragerc
.The integration reached or maintains the following Integration Quality Scale:
To help with the load of incoming pull requests: