Hook-based volume setter scripts run concurrently and potentially out-of-order
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 190
- Fork
- 36
- Merge trung bình
- 11 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 2
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Sendspin/sendspin-python-cli
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Sendspin/sendspin-python-cli#280 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Sendspin/sendspin-python-cli#278 · 2 bình luận · 5 reaction ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Sendspin/sendspin-python-cli#257 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Sendspin/sendspin-python-cli#256 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Sendspin/sendspin-python-cli#113 · 10 bình luận ·
Tất cả issue của Sendspin/sendspin-python-cli
Issue tương tự
-
triage/confirmed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
agentscope-ai/agentscope#2775 ·
-
comp/desktop P3 type/bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
NousResearch/hermes-agent#118866 ·
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
apache/cloudstack#14222 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100