Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Hook-based volume setter scripts run concurrently and potentially out-of-order

Abierto
#274 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
python
Área
backend

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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 [email protected] 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.

Lenguaje dominante
Python
Estrellas
193
Forks
37
Merge medio
11 d 19 h
PR fusionados (30 d)
2

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Sendspin/sendspin-python-cli

Todos los issues de Sendspin/sendspin-python-cli

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.