Hook-based volume setter scripts run concurrently and potentially out-of-order
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
Direzione di ricerca
Start by tracing volume handling in the daemon from the hook-based volume setter, then reproduce the issue by rapidly changing the volume with the slider. Check how concurrent hook calls are scheduled and ordered. Done means each requested volume, especially the final value, invokes the hook reliably and in the correct order.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
It seems the hook-based volume setting command is sometimes not run.
In my setup, I run sendspin in a systemd unit via uvx:
uvx sendspin@7.5.0 daemon --audio-device=mydevice --hook-set-volume /usr/local/bin/set-alsa-volume.sh --name "myname" --id myid --disable-mpris --port 12345
My set-alsa-volume.sh script looks like this:
#!/bin/sh
exec systemd-cat -t "sendspin-triggered-amixer" amixer -D "$ALSA_DEVICE" sset "$ALSA_MIXER_CTL" "$1"%
(Note: The systemd-cat command ensures the output of the amixer command is sent to the journal of the sendspin systemd unit.)
Here's an example I managed to log where an expected call of the script does not occur:
Aug 04 14:36:10 server uvx[3235267]: INFO:sendspin.daemon.daemon:Server set player volume: 43%
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Simple mixer control 'Master',0
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Capabilities: volume cswitch
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Playback channels: Front Left - Front Right
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Capture channels: Front Left - Front Right
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Limits: -50 - 100
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Front Left: 14 [43%] [-25.80dB] Capture [on]
Aug 04 14:36:10 server sendspin-triggered-amixer[294409]: Front Right: 14 [43%] [-25.80dB] Capture [on]
Aug 04 14:36:11 server uvx[3235267]: INFO:sendspin.daemon.daemon:Server set player volume: 46%
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Simple mixer control 'Master',0
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Capabilities: volume cswitch
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Playback channels: Front Left - Front Right
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Capture channels: Front Left - Front Right
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Limits: -50 - 100
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Front Left: 19 [46%] [-24.30dB] Capture [on]
Aug 04 14:36:11 server sendspin-triggered-amixer[294411]: Front Right: 19 [46%] [-24.30dB] Capture [on]
Aug 04 14:36:14 server uvx[3235267]: INFO:sendspin.daemon.daemon:Server set player volume: 78%
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Simple mixer control 'Master',0
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Capabilities: volume cswitch
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Playback channels: Front Left - Front Right
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Capture channels: Front Left - Front Right
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Limits: -50 - 100
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Front Left: 67 [78%] [-9.90dB] Capture [on]
Aug 04 14:36:14 server sendspin-triggered-amixer[294526]: Front Right: 67 [78%] [-9.90dB] Capture [on]
Aug 04 14:36:16 server uvx[3235267]: INFO:sendspin.daemon.daemon:Server set player volume: 68%
<expected call of set-alsa-volume.sh does not occur here>
The example was produced by quickly changing the volume many times in the Music-Assistant web UI using the volume slider. The last setting (68%) does not result in a corresponding call of the volume setter hook.
Could the problem be a race condition between some internal state that represents the current volume and some check that decides whether to call the script?
EDIT: I've changed the title of the issue to better reflect the findings in my additional comment below.
- Lingua principale
- Python
- Stelle
- 190
- Fork
- 36
- Merge medio
- 11g 19h
- PR unite (30g)
- 2
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Sendspin/sendspin-python-cli
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Sendspin/sendspin-python-cli#280 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
Sendspin/sendspin-python-cli#278 · 2 commenti · 5 reazioni ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Sendspin/sendspin-python-cli#257 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Sendspin/sendspin-python-cli#256 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Sendspin/sendspin-python-cli#113 · 10 commenti ·
Tutte le issue di Sendspin/sendspin-python-cli
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
OpenHands/extensions#626 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
CSCfi/sd-search-api#39 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
please add to porn list Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
StevenBlack/hosts#3255 ·