Skip to content
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

Avoid playing queue pollution with Sonos unjoin #22004

Merged
merged 1 commit into from Mar 13, 2019

Conversation

Projects
None yet
3 participants
@amelchio
Copy link
Member

amelchio commented Mar 13, 2019

Description:

This is the same fix as in #21963, but for explicit sonos_unjoin service calls rather than the implicit unjoin that a sonos_restore service call can do. I missed this case because the affected method did not exist until the refactor in #21985.

Imagine three speakers in a group, ABC, playing the A queue. If we unjoin A, the remaining group BC will elect a new coordinator that must drop its own queue in order to not interrupt the playing A queue. If we then unjoin B, we have three separate speakers but at least one of them will have had its queue replaced.

In contrast, unjoining in the order B then C will make them each restore their own queues while A keeps playing. We now end up with three separate speakers that have maintained their original queues.

So it is better to unjoin coordinators last and that is what this PR does. Note, however, that this only helps if all speakers are unjoined by a single service call.

Checklist:

  • The code change is tested and works locally.
  • Local tests pass with tox.
  • There is no commented out code in this PR.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • New dependencies have been added to the REQUIREMENTS variable (example).
  • New dependencies are only imported inside functions that use them (example).
  • New or updated dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
  • New files were added to .coveragerc.

If the code does not interact with devices:

  • Tests have been added to verify that the new code works.

@wafflebot wafflebot bot added the in progress label Mar 13, 2019

@balloob balloob merged commit fe5e4b5 into home-assistant:dev Mar 13, 2019

4 checks passed

Hound No violations found. Woof!
cla-bot Everyone involved has signed the CLA
continuous-integration/travis-ci/pr The Travis CI build passed
Details
coverage/coveralls First build on sonos-unjoin-keep-queues at 92.829%
Details

@wafflebot wafflebot bot removed the in progress label Mar 13, 2019

@balloob balloob referenced this pull request Mar 20, 2019

Merged

0.90.0 #22216

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.