Skip to content

Instantly share code, notes, and snippets.

@Sawtaytoes
Created August 9, 2026 21:47
Show Gist options
  • Select an option

  • Save Sawtaytoes/61fe34334f51fc936cfd081ff34dee08 to your computer and use it in GitHub Desktop.

Select an option

Save Sawtaytoes/61fe34334f51fc936cfd081ff34dee08 to your computer and use it in GitHub Desktop.
Music Assistant 2.9.9 — overlapping sync groups pause/unpause repro (support#6037)

Music Assistant setup summary (for support issue: overlapping sync groups)

Assembled manually — the /diagnostics HTTP endpoint returns 404 on this 2.9.9 build (/info works), so the standard sanitized diagnostics JSON isn't available here. Attaching this summary + a DEBUG server-log excerpt per the fallback instructions.

Server (GET /info)

Field Value
server_version 2.9.9
schema_version 31 (min supported 28)
homeassistant_addon false → Docker container install
onboard_done true
status running

Package versions: music_assistant 2.9.9, music_assistant_models 1.1.129.post1, fastmcp 3.3.1, aiohttp 3.14.1, mashumaro 3.20.

The overlapping sync groups (crux of the bug)

Group (id) Members
Living Room Speakers Group (syncgroup_fezfgtoy) Living Room Cabinet Left + Right Speaker
Downstairs Speakers Group (syncgroup_rbsbfimm) Dining Room, Living Room Cabinet Left, Living Room Cabinet Right, Kitchen Desk, Kitchen Entryway Counter, + 2 Sendspin players

Living Room Cabinet Left/Right are members of BOTH groups. All members are Sendspin protocol players.

Additional overlapping groups exist (Everywhere / Master Bedroom / Basement, etc.) — suspected culprit in the whole-house case is the Everywhere group silently activating.

Repro driver

play → pause → unpause issued on the Living Room Speakers Group queue via the API (Music Assistant MCP), ~4 cycles. Global logging DEBUG on the playback chain (players, player_queues, streams, music cores + sync_group, universal_group, universal_player, sendspin providers). See the accompanying .log file.

Key finding

Sync groups don't support pause → every pause becomes a STOP that dissolves the sync group, and every unpause re-forms it from scratch (new Sendspin group UUID each time), repeatedly regrouping the two cabinet speakers that also belong to the Downstairs group. Suspected race points: removed from group as non-leader; keeping old group playing + the 10s idle-grace dissolve window.

# Music Assistant 2.9.9 — global DEBUG log, overlapping-sync-group repro
# Reproduction: play -> pause -> unpause (x several) on "Living Room Speakers Group"
# (members: Living Room Cabinet Left + Right, both Sendspin protocol),
# which shares those two speakers with "Downstairs Speakers Group".
# Global logging set to DEBUG on: players, player_queues, streams, music cores +
# sync_group, universal_group, universal_player, sendspin providers.
# Bearer tokens/secrets redacted by MA's log tailer. Times are America/Chicago.
# "Send summary role=player ..." buffer-stats lines elided as [... buffer stats ...].
# ===== PAUSE #1 (converted to STOP -> sync group torn down) =====
2026-08-09T16:37:40.923 DEBUG music_assistant.players Player/protocol Living Room Speakers Group does not support pause, using STOP instead
2026-08-09T16:37:40.923 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Received STOP command on player Living Room Cabinet Right Speaker
2026-08-09T16:37:40.924 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Cancelling playback task (stop command)
2026-08-09T16:37:40.950 DEBUG aiosendspin.server.group Stopping playback for group with clients: ['living-room-cabinet-right-speaker', 'living-room-cabinet-left-speaker']
2026-08-09T16:37:40.953 DEBUG music_assistant.players set_members on Living Room Cabinet Right Speaker: active_protocol=sendspin, adding=[], removing=['uplivingroomcabinetleftspeaker']
2026-08-09T16:37:40.953 DEBUG music_assistant.players Translating removal: uplivingroomcabinetleftspeaker -> protocol living-room-cabinet-left-speaker
2026-08-09T16:37:40.953 DEBUG music_assistant.players Calling set_members on protocol player Living Room Cabinet Right Speaker with add=[], remove=['living-room-cabinet-left-speaker']
2026-08-09T16:37:40.953 DEBUG aiosendspin.server.group removing living-room-cabinet-left-speaker from group with members: [right, left]
2026-08-09T16:37:40.957 DEBUG music_assistant.Sendspin.living-room-cabinet-left-speaker Player living-room-cabinet-left-speaker removed from group as non-leader; keeping old group playing
2026-08-09T16:37:40.959 DEBUG aiosendspin.server.group SendspinGroup initialized with 1 client(s): ['SendspinClient']
2026-08-09T16:37:40.959 DEBUG music_assistant.players After set_members, protocol player Living Room Cabinet Right Speaker state: group_members=['living-room-cabinet-right-speaker'], synced_to=None
2026-08-09T16:37:43.214 DEBUG music_assistant.Sync Group Player Scheduling idle-grace dissolve for syncgroup Living Room Speakers Group in 10.0s
# ===== UNPAUSE #1 (play_media -> sync group re-formed from scratch) =====
2026-08-09T16:37:45.193 DEBUG music_assistant.player_queues (pre)loading (next) item for queue Living Room Speakers Group...
2026-08-09T16:37:45.213 DEBUG music_assistant.players Handling command play_media for player Living Room Speakers Group (unauthenticated)
2026-08-09T16:37:45.214 DEBUG music_assistant.Sync Group Player Forming syncgroup Living Room Speakers Group, _attr_group_members=['uplivingroomcabinetrightspeaker', 'uplivingroomcabinetleftspeaker'], sync_leader=None
2026-08-09T16:37:45.214 DEBUG music_assistant.Sync Group Player Auto-selected Living Room Cabinet Right Speaker as sync leader for group Living Room Speakers Group
2026-08-09T16:37:45.215 DEBUG music_assistant.players set_members on Living Room Cabinet Right Speaker: active_protocol=none, adding=['uplivingroomcabinetleftspeaker'], removing=[]
2026-08-09T16:37:45.215 DEBUG music_assistant.players Protocol grouping on Living Room Cabinet Right Speaker: filtered_add=['living-room-cabinet-left-speaker'], filtered_remove=[]
2026-08-09T16:37:45.215 DEBUG aiosendspin.server.group adding living-room-cabinet-left-speaker to group with members: [right]
2026-08-09T16:37:45.215 DEBUG aiosendspin.server.group add_client(living-room-cabinet-left-speaker): stopping previous group=9348841d-6649-4863-8d3e-234cfc171665 active=False members=['living-room-cabinet-left-speaker']
2026-08-09T16:37:45.215 DEBUG aiosendspin.server.group removing living-room-cabinet-left-speaker from group with members: [left]
2026-08-09T16:37:45.216 DEBUG aiosendspin.server.group SendspinGroup initialized with 1 client(s): ['SendspinClient']
2026-08-09T16:37:45.218 DEBUG aiosendspin.server.group Sending group update to new client living-room-cabinet-left-speaker
2026-08-09T16:37:45.218 DEBUG music_assistant.players Protocol grouping: is_native=False, already_native=True, already_this=False, switching=True, was_playing=False
2026-08-09T16:37:45.219 DEBUG music_assistant.players After set_members, protocol player Living Room Cabinet Right Speaker state: group_members=['living-room-cabinet-right-speaker', 'living-room-cabinet-left-speaker'], synced_to=None
2026-08-09T16:37:45.220 DEBUG music_assistant.players Starting playback on Living Room Cabinet Right Speaker via protocol Sendspin (target=Living Room Cabinet Right Speaker), group_members=['living-room-cabinet-right-speaker', 'living-room-cabinet-left-speaker']
2026-08-09T16:37:45.220 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Received PLAY_MEDIA command on player Living Room Cabinet Right Speaker with uri library://track/75795
2026-08-09T16:37:45.232 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Sendspin session PCM format: 48000 Hz / F32
2026-08-09T16:37:45.818 DEBUG music_assistant.player_queues PlayerQueue Living Room Speakers Group loaded item de245b69382e4304ab1ab06bc282e1c6 in buffer
2026-08-09T16:37:45.854 DEBUG aiosendspin.server.client.living-room-cabinet-right-speaker Sending stream/start: FLAC 48000 Hz / 2ch / 24bit
2026-08-09T16:37:45.854 DEBUG aiosendspin.server.client.living-room-cabinet-left-speaker Sending stream/start: FLAC 48000 Hz / 2ch / 24bit
# [... buffer stats ...]
# ===== PAUSE #2 (STOP again -> teardown again, identical shape) =====
2026-08-09T16:37:47.588 DEBUG music_assistant.players Player/protocol Living Room Speakers Group does not support pause, using STOP instead
2026-08-09T16:37:47.588 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Received STOP command on player Living Room Cabinet Right Speaker
2026-08-09T16:37:47.606 DEBUG aiosendspin.server.group Stopping playback for group with clients: ['living-room-cabinet-right-speaker', 'living-room-cabinet-left-speaker']
2026-08-09T16:37:47.608 DEBUG music_assistant.players set_members on Living Room Cabinet Right Speaker: active_protocol=sendspin, adding=[], removing=['uplivingroomcabinetleftspeaker']
2026-08-09T16:37:47.611 DEBUG music_assistant.Sendspin.living-room-cabinet-left-speaker Player living-room-cabinet-left-speaker removed from group as non-leader; keeping old group playing
2026-08-09T16:37:47.613 DEBUG music_assistant.players After set_members, protocol player Living Room Cabinet Right Speaker state: group_members=['living-room-cabinet-right-speaker'], synced_to=None
2026-08-09T16:37:48.050 DEBUG music_assistant.Sync Group Player Scheduling idle-grace dissolve for syncgroup Living Room Speakers Group in 10.0s
# ===== UNPAUSE #2 (play_media -> re-form; note NEW previous-group uuid) =====
2026-08-09T16:37:52.405 DEBUG music_assistant.players Handling command play_media for player Living Room Speakers Group (unauthenticated)
2026-08-09T16:37:52.406 DEBUG music_assistant.Sync Group Player Forming syncgroup Living Room Speakers Group, _attr_group_members=['uplivingroomcabinetrightspeaker', 'uplivingroomcabinetleftspeaker'], sync_leader=None
2026-08-09T16:37:52.406 DEBUG music_assistant.Sync Group Player Auto-selected Living Room Cabinet Right Speaker as sync leader for group Living Room Speakers Group
2026-08-09T16:37:52.406 DEBUG aiosendspin.server.group add_client(living-room-cabinet-left-speaker): stopping previous group=ff0e78d6-c510-4b6c-88bf-b9013ac18f9d active=False members=['living-room-cabinet-left-speaker']
2026-08-09T16:37:52.411 DEBUG music_assistant.players Starting playback on Living Room Cabinet Right Speaker via protocol Sendspin (target=Living Room Cabinet Right Speaker), group_members=['living-room-cabinet-right-speaker', 'living-room-cabinet-left-speaker']
2026-08-09T16:37:52.411 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Received PLAY_MEDIA command on player Living Room Cabinet Right Speaker with uri library://track/75795
# [... track buffered and played out; buffer stats elided ...]
# ===== FINAL STOP (track ended / manual stop) =====
2026-08-09T16:38:51.537 DEBUG music_assistant.Sendspin.living-room-cabinet-right-speaker Received STOP command on player Living Room Cabinet Right Speaker
2026-08-09T16:38:51.545 DEBUG aiosendspin.server.group Stopping playback for group with clients: ['living-room-cabinet-right-speaker', 'living-room-cabinet-left-speaker']
2026-08-09T16:38:51.551 DEBUG music_assistant.Sendspin.living-room-cabinet-left-speaker Player living-room-cabinet-left-speaker removed from group as non-leader; keeping old group playing
2026-08-09T16:38:51.553 DEBUG music_assistant.players After set_members, protocol player Living Room Cabinet Right Speaker state: group_members=['living-room-cabinet-right-speaker'], synced_to=None
2026-08-09T16:38:53.809 DEBUG music_assistant.Sync Group Player Scheduling idle-grace dissolve for syncgroup Living Room Speakers Group in 10.0s
2026-08-09T16:38:53.837 DEBUG music_assistant.player_queues Cleared 1 audio buffer(s) for stopped/cleared queue syncgroup_fezfgtoy
2026-08-09T16:38:54.323 DEBUG music_assistant.music Credited play for track 'Gravity Grumble'
# NOTE: In this driven run the visible leak onto "Downstairs Speakers Group" did NOT
# manifest across ~4 pause/unpause cycles; the symptom is intermittent in normal use.
# The trace above shows the fragile machinery: pause==STOP fully dissolves the sync
# group and each unpause re-forms it, repeatedly regrouping the two cabinet speakers
# that are ALSO members of the Downstairs group. The non-leader "keeping old group
# playing" line + the 10s idle-grace dissolve window are the suspected race points.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment