Airsonic-Erreur 502 Bad gateway

Mon serveur YunoHost

Matériel: Raspberry Pi à la maison
Version de YunoHost: 3.6.5.3
J’ai accès à mon serveur : En SSH | Par la webadmin

Description du problème

Bonjour,
J’ai voulu changer la quantité de mémoire allouée à Airsonic dans le fichier /etc/default/airsonic et suite à cette modification je n’arrive plus à lancer le service systemd. Voici ce que donne comme message d’erreur la commande suivante:

service airsonic start
Assertion failed on job for airsonic.service

Je ne sais pas interpréter ce message d’erreur, comment puis-je rétablir la situation et à quoi est-ce dû?
La solution ci-dessous concerne une erreur 502 et non “Assertion failed on job”, le problème ayant évolué entre temps.

Quid de systemctl restart airsonic

J’obtiens la même réponse.
Voici un extrait de ma sauvegarde de cette nuit réalisée avec Borg:

– Logs begin at Sun 2019-12-01 01:43:47 CET, end at Tue 2019-12-03 01:30:34 CET.
déc. 02 20:14:07 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @setuid
déc. 02 20:14:07 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @swap
déc. 02 20:16:01 metyun.ynh.fr systemd[1]: airsonic.service: Starting requested but asserts failed.
déc. 02 20:16:01 metyun.ynh.fr systemd[1]: Assertion failed for Airsonic Media Server.
déc. 02 20:16:17 metyun.ynh.fr systemd[1]: airsonic.service: Starting requested but asserts failed.
déc. 02 20:16:17 metyun.ynh.fr systemd[1]: Assertion failed for Airsonic Media Server.
déc. 03 00:07:07 metyun.ynh.fr systemd[1]: airsonic.service: Starting requested but asserts failed.
déc. 03 00:07:07 metyun.ynh.fr systemd[1]: Assertion failed for Airsonic Media Server.
déc. 03 00:10:41 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @reboot
déc. 03 00:10:41 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @setuid
déc. 03 00:10:41 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @swap
déc. 03 00:10:55 metyun.ynh.fr systemd[1]: airsonic.service: Starting requested but asserts failed.
déc. 03 00:10:55 metyun.ynh.fr systemd[1]: Assertion failed for Airsonic Media Server.
déc. 03 00:12:04 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @reboot
déc. 03 00:12:04 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @setuid
déc. 03 00:12:04 metyun.ynh.fr systemd[1]: [/etc/systemd/system/airsonic.service:32] Don’t know system call group, ignoring: @swap
déc. 03 00:12:11 metyun.ynh.fr systemd[1]: airsonic.service: Starting requested but asserts failed.
déc. 03 00:12:11 metyun.ynh.fr systemd[1]: Assertion failed for Airsonic Media Server.
déc. 03 01:30:34 metyun.ynh.fr systemd[1]: airsonic.service: Starting requested but asserts failed.
déc. 03 01:30:34 metyun.ynh.fr systemd[1]: Assertion failed for Airsonic Media Server.

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_232]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_232]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_232]

Et également plusieurs lignes de ce type:

[34me[1m[DEBUG]e[0m: WARNING - 2019-12-01 22:27:15.420  INFO -- o.a.p.s.LoggingExceptionResolver         : 127.0.0.1: Client unexpectedly closed connection while loading http://metyun.ynh.fr/airsonic /rest/getCoverArt.view?v=1.2.0&c=DSub&id=2122&p=<hidden>&u=<hidden>(java.io.IOException: Relais brisé (pipe))

[34me[1m[DEBUG]e[0m: WARNING - 2019-12-02 00:16:16.402  INFO --- o.a.p.io.PlayQueueInputStream            : 127.0.0.1: User2 listening to Music from Another Dimension! (2012)/01 Luv XXX.mp3
e[34me[1m[DEBUG]e[0m: DEBUG   - + ynh_print_err '--message=!! airsonic'\''s script has encountered an error. Its execution was cancelled.

Il s’agit d’une nouvelle installation. J’ai réinstallé, ça fonctionne tant que je ne change pas la valeur de JAVA_OPTS=-Xmx700m dans le fichier /etc/default/airsonic. A moins que je fais erreur et que ce n’est pas ce fichier et cette ligne qu’il faut modifier? Même si je remets la valeur par défaut, ça ne fonctionne plus. J’ai essayé de relancer le service Nginx également sans succès et j’obtiens une erreur 502 sur la page.
déc. 03 01:30:34 correspond à l’heure de la sauvegarde lancée par une tâche cron.

Il faut modifier le fichier /etc/systemd/system.airsonic.service puis relancer le service avec systemctl restart airsonic pour que la modification soit prise en compte.

En toute logique, il faudrait que le paquet utilise le /etc/default/airsonic car là, c’est du moitié moitié pas propre mais j’ai fais au plus simple pour mon usage :innocent:

Je n’ai pas testé ces modifications et je veux bien en retour si tu arrives à reduire l’utilisation de RAM de l’application. J’ai pris les valeurs fournies par la documentation Airsonic

Pour “Assertion failed” c’était bien une mauvaise valeur dans /etc/systemd/system.airsonic.service, erreur de ma part.
J’ai changé le chemin url et ça a fonctionné. J’ai réussi une fois à lancer en changeant la quantité de mémoire allouée donc ça fonctionne.
Mais après quelques tests, il suffit que je stoppe le démon avec les commandes suivantes et que je le relance pour que ça ne fonctionne plus et je tombe sur une erreur 502.

 systemctl stop airsonic
 systemctl start airsonic

Finalement c’est l’erreur 502 le problème quand on stoppe/démarre airsonic.service. Je modifie le titre en conséquence.
Edit: htop affiche bien les lignes /usr/bin/java -Xmx… donc le démon se lance bien. En relançant nginx pas mieux.

J’ai fini par trouver, il faut lancer ces 2 commandes ensuite:

    systemctl reload nginx
    systemctl restart nginx

Je n’avais essayé qu’avec restart, avez-vous une explication de la différence et nécessité du reload avant le restart? C’est pour comprendre ce que j’ai fais, j’ai réussi un peu au pif.

Pas d’explication non.
Le “reload” est plus sûr car il ne coupe pas le service avant de prendre en compte les changements de configuration et qu’il vérifie la syntaxe des fichiers de configuration.
Le “restart” arrête puis relance le service.

source: https://help.dreamhost.com/hc/en-us/articles/216454967-How-to-reload-and-restart-Nginx-Dedicated-servers-only-

1 Like

Pour info et rappel, lors des prochaines mises à jour du paquet Airsonic par YunoHost, les modifications manuelles seront écrasées.

J’ai testé (uniquement sur le réseau local pour l’instant) avec 2 utilisateurs simultanés en limitant à 300M au lieu de 700M dans le fichier /etc/default/airsonic. Tout fonctionne bien, la lecture est fluide et démarre de suite, la navigation dans l’arborescence est rapide et la sélection se fait aisément. Seul l’ouverture des options (paramètres, plus, …) est lente mais ce n’est pas un problème, ça ne s’utilise pas au quotidien. Sur un Raspberry qui est limité en ram, c’est bien de pouvoir limiter la ram allouée.

Pour les valeurs que tu as pris dans la documentation, ne sont-elles pas celle de yunohost par défaut?

D’ailleurs je n’ai pas essayé mais le reload était peut-être suffisant sans le restart.

Oui, d’ailleurs c’est un truc un peu pénible de devoir refaire ses modifications quand on a plusieurs applications. Un chattr +i devrait empêcher le fichier d’être écrasé je pense.

Ca pourrait être une bonne piste pour améliorer l’utilisation en ressources du logiciel! Merci

Je ne suis pas certain de comprendre alors je m’explique: le paquet YunoHost utilise les valeurs de mémoires inscrites dans la documentation de Airsonic. Il est peut être possible de diminuer l’utilisation si “peu” d’usagers utilisent le service comme dans le cas de YunoHost.

Ca serait trop compliqué pour les gestionnaires de paquets de devoir faire la fusion entre la configuration actuelle et la nouvelle version fournie qui va être installée.
YunoHost part du principe que la “vérité” est le fichier de configuration du nouveau paquet à installer.

“Dans le futur”, il devrait y avoir une interface graphique qui permettra de faire des modifications sur les applications: https://github.com/YunoHost/yunohost-admin/pull/198
Ca ne résoudra pas le problème de “fusion de version” mais c’est un pas en avant :slight_smile:

1 Like