Projet

Général

Profil

Tâche #16166

Scénario #16215: Traitement express (22-24)

plantages de creoled sur EOLE 2.6.0

Ajouté par Gilles Grandgérard il y a presque 8 ans. Mis à jour il y a presque 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
01/10/2014
Echéance:
% réalisé:

100%

Temps estimé:
1.00 h
Temps passé:
Restant à faire (heures):
0.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

Lié à Distribution EOLE - Tâche #16280: EOLE 2.6 : creoled ne veut pas démarrer Fermé 01/10/2014

Révisions associées

Révision c1540ce7 (diff)
Ajouté par Bruno Boiget il y a presque 8 ans

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é

Formats disponibles : Atom PDF