Tâche #16166
Scénario #16215: Traitement express (22-24)
plantages de creoled sur EOLE 2.6.0
Description
Le process Maj-Auto s'arrete en erreur.
Ce bug est apparu dans le job :
http://jenkins.eole.lan/jenkins/job/day-amonecole-2.6.0-amd64/lastFailedBuild/console
00:05:05.542 Paramétrage de python-eolesql (2.6.0-3) ... 00:05:05.542 Traitement des actions différées (« triggers ») pour dbus (1.10.6-1ubuntu3) ... 00:05:05.542 Traitement des actions différées (« triggers ») pour libc-bin (2.23-0ubuntu3) ... 00:05:14.563 Maj-Auto - Erreur HTTP : socket.error: [Errno 111] ECONNREFUSED 00:05:14.563 Veuillez vous référer au journal d'événement de creoled (/var/log/creoled.log) pour avoir plus d'informations et redémarrer le service avec la commande 'service creoled start'. Si le démarrage du service creoled ne résout pas le problème, essayez la commande Maj-Auto avec l'option '-i'.
Contenue de creoled.log :
2016-05-20 18:14:01,015: cherrypy.error - ENGINE Stop InotifyMonitor thread 2016-05-20 18:14:01,015: cherrypy.error - ENGINE Stop InotifyMonitor thread 2016-05-20 18:14:01,020: cherrypy.error - ENGINE Error in 'stop' listener <bound method InotifyMonitor.stop of <pyeole.cherrypy_plugins.InotifyMonitor object at 0x7f03408f1690>> Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/cherrypy/process/wspbus.py", line 205, in publish output.append(listener(*args, **kwargs)) File "/usr/lib/python2.7/dist-packages/pyeole/cherrypy_plugins.py", line 68, in stop self._notifier.stop() File "/usr/lib/python2.7/dist-packages/pyinotify.py", line 1472, in stop threading.Thread.join(self) File "/usr/lib/python2.7/threading.py", line 929, in join raise RuntimeError("cannot join thread before it is started") RuntimeError: cannot join thread before it is started 2016-05-20 18:14:01,020: cherrypy.error - ENGINE Error in 'stop' listener <bound method InotifyMonitor.stop of <pyeole.cherrypy_plugins.InotifyMonitor object at 0x7f03408f1690>> Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/cherrypy/process/wspbus.py", line 205, in publish output.append(listener(*args, **kwargs)) File "/usr/lib/python2.7/dist-packages/pyeole/cherrypy_plugins.py", line 68, in stop self._notifier.stop() File "/usr/lib/python2.7/dist-packages/pyinotify.py", line 1472, in stop threading.Thread.join(self) File "/usr/lib/python2.7/threading.py", line 929, in join raise RuntimeError("cannot join thread before it is started") RuntimeError: cannot join thread before it is started
Demandes liées
Révisions associées
Lancement de creoled sans l'option --daemon
- empêche que systemd relance le service en cas de rechargement
ref #16166 @1h
Historique
#1 Mis à jour par Bruno Boiget il y a presque 8 ans
pour compléter, le problème se produit à chaque fois que creoled se recharge suite à un changement de code python (testé en modifiant un nom de fonction dans eosfunc.py)
#2 Mis à jour par Bruno Boiget il y a presque 8 ans
- Sujet changé de maj-auto en erreur sur amonecole 2.6.0 à plantages de creoled sur EOLE 2.6.0
Daniel signale qu'on pourrait désactiver le rechargement automatique de creoled en cas de modification de code d'une librairie python.
A priori il n'y a pas de problème sur la relance en modifiant un dictionnaire ou config.eol.
#3 Mis à jour par Joël Cuissinat il y a presque 8 ans
- Tâche parente changé de #16058 à #16215
#4 Mis à jour par Scrum Master il y a presque 8 ans
- Statut changé de Nouveau à En cours
#5 Mis à jour par Scrum Master il y a presque 8 ans
- Assigné à mis à Bruno Boiget
#6 Mis à jour par Bruno Boiget il y a presque 8 ans
Le problème semble venir du fait que systemd essaie de relancer le service lorsque celui-ci est en cours de redémarrage (soit parce qu'il n'y a plus de process en cours, soit parce que le fichier pid est modifié ou supprimé ?)
Je n'ai pas le problème en ajoutant la directive "RemainAfterExit=yes" dans creoled.service (specifies whether the service shall be considered active even when all its processes exited). Il faudrait voir si cela ne casse pas la surveillance du process après qu'il redémarre (le PID change dans creoled.pid)
J'ai aussi essayé de jouer avec différentes valeurs pour "Restart=", mais cela ne semble pas suffire
Après un reload automatique, le status est toujours détecté, mais on voit que le process principal est considéré comme terminé :
● creoled.service - EOLE Creole server Loaded: loaded (/lib/systemd/system/creoled.service; enabled; vendor preset: enabled) Active: active (exited) since mer. 2016-06-08 10:39:46 CEST; 1min 48s ago Process: 4740 ExecStart=/usr/sbin/creoled --daemon --pidfile /run/creoled.pid (code=exited, status=0/SUCCESS) Main PID: 4750 (code=exited, status=0/SUCCESS) CGroup: /system.slice/creoled.service └─4812 /usr/bin/python /usr/sbin/creoled --daemon --pidfile /run/creoled.pid juin 08 10:39:45 eolebase systemd[1]: Starting EOLE Creole server... juin 08 10:39:46 eolebase systemd[1]: creoled.service: PID file /run/creoled.pid not readable (yet?) after start: No such file or directory juin 08 10:39:46 eolebase systemd[1]: creoled.service: Supervising process 4750 which is not our child. We'll most likely not notice when it exits. juin 08 10:39:46 eolebase systemd[1]: Started EOLE Creole server.
pb: si je tue le processus existant (kill -9), status renvoie toujours active (exited)
#7 Mis à jour par Bruno Boiget il y a presque 8 ans
autre solution (plus simple) : enlever --daemon de la ligne de commande et utiliser type=simple dans creoled.service
la différence est que le service n'uitilise plus /var/log/creoled.log (mais rsyslog)
#8 Mis à jour par Bruno Boiget il y a presque 8 ans
- % réalisé changé de 0 à 100
- Restant à faire (heures) changé de 1.0 à 0.25
paquet compilé (creole 2.6.0-56)
pour tester :
- tail -f /var/log/rsyslog/local/creoled/*.log
- modifier /etc/python2.7/sitecustomize.py et vérifier que creoled se recharge sans erreur
#9 Mis à jour par Scrum Master il y a presque 8 ans
- Statut changé de En cours à Résolu
#10 Mis à jour par Fabrice Barconnière il y a presque 8 ans
- Restant à faire (heures) changé de 0.25 à 0.0
OK
#11 Mis à jour par Fabrice Barconnière il y a presque 8 ans
- Statut changé de Résolu à Fermé