Anomalie #5494
Plantages possibles à cause du reload de creoled !
Description
run-parts: executing /usr/share/eole/posttemplate/00-annuaire instance root - HTTP error: socket.error: Can't connect to ('127.0.0.1', 8000) root - HTTP error: socket.error: Can't connect to ('127.0.0.1', 8000) /usr/share/eole/posttemplate/00-annuaire: ligne 6 : [: = : opérateur unaire attendu
Ici la synchronisation du mot de passe ldap n'est pas réalisée et cela entraîne des dysfonctionnements en cascade :)
Révisions associées
Ajout d’un pluging « InotifyMonitor » pour « cherrypy »
- pyeole/cherrypy_plugins.py: Le plugin « InotifyMonitor » lance un
« pyinotify.TheadedNotifier ».
Ref: #5494 @1h
Recharger la configuration « CreoleServer » sans arrêter « creoled »
Utilisation du plugin « pyeole.cherrypy_plugins.InotifyMonitor » afin de
recharger la configuration sans arrêter le processus « cherrypy ».
- creole/server.py (_inotify_filter): Filtre les événements inotify.
(CreoleInotifyHandler): Gestionaire d’événements inotify.
(CreoleDaemon.run): Simplification du code du fait du passage à
inotify.
Fixes: #5494 @3h
Le thread inotify plante si le reload de la configuration plante
- creole/server.py (CreoleInotifyHandler): Intercépter les exceptions
levées par le reload de la configuration.
(CreoleServer.reload_config): Ne pas concaténer un message unicode avec
un message d’exception pouvant être n’importe quoi.
Ref: #5494 @45m
Le client creole plante sur l’appel du reload creoled
Les méthodes « cherrypy » doivent retourner la réponse afin de l’envoyer
au client.
- creole/server.py (CreoleServer.reload_config): Ajout des « return ».
Ref: #5494
Historique
#1 Mis à jour par Emmanuel GARETTE il y a presque 11 ans
Le timeout est trop court ou creoled n'est pas redémarré ?
#2 Mis à jour par Joël Cuissinat il y a plus de 10 ans
- Version cible changé de Eole 2.4-dev-3 à Eole 2.4-alpha
#3 Mis à jour par Daniel Dehennin il y a plus de 10 ans
L’idéal serait de faire un nouveau plugin basé sur Autoreloader.
Au lieu de redémarrer le thread automatiquement, l’activation de ce nouveau plugin devrait prendre un callback:
engine = cherrypy.engine
server = CreoleServer()
cherrypy.tree.mount(server, self.option.mount_base,
config={'global' : {} })
# [...]
# Load plugins
## reload server on inotify
# Reload on values
_autoreload_files = set(self._list_dirs(configeoldir, pattern='*.eol'))
# Reload on creole XML definitions
_autoreload_files.add(dirname(configeol))
_autoreload_files.update(set(self._list_dirs(eoledirs)))
_autoreload_files.add(eoleextradico)
creole.cherrypy.plugins.InotifyReloader(engine, _autoreload_files, server.reload).subscribe()
#4 Mis à jour par Daniel Dehennin il y a plus de 10 ans
- Echéance mis à 06/09/2013
- Statut changé de A étudier à Accepté
- Assigné à mis à Daniel Dehennin
- Début mis à 05/09/2013
#5 Mis à jour par Daniel Dehennin il y a plus de 10 ans
- Statut changé de Accepté à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit ff1af2314fd27c29a86be32062e1344359dd7666.
#6 Mis à jour par Joël Cuissinat il y a plus de 10 ans
- Version cible changé de Eole 2.4-alpha à Eole 2.4-alpha2
changement de roadmap car pas assez de recul pour qualifier :)
#7 Mis à jour par Joël Cuissinat il y a plus de 10 ans
- Statut changé de Résolu à Fermé
Problèmes de ce genre non reproduits récemment :)