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 :)
Associated revisions
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
History
#1 Updated by Emmanuel GARETTE over 10 years ago
Le timeout est trop court ou creoled n'est pas redémarré ?
#2 Updated by Joël Cuissinat about 10 years ago
- Target version changed from Eole 2.4-dev-3 to Eole 2.4-alpha
#3 Updated by Daniel Dehennin about 10 years ago
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 Updated by Daniel Dehennin about 10 years ago
- Due date set to 09/06/2013
- Status changed from A étudier to Accepté
- Assigned To set to Daniel Dehennin
- Start date set to 09/05/2013
#5 Updated by Daniel Dehennin about 10 years ago
- Status changed from Accepté to Résolu
- % Done changed from 0 to 100
Appliqué par commit ff1af2314fd27c29a86be32062e1344359dd7666.
#6 Updated by Joël Cuissinat about 10 years ago
- Target version changed from Eole 2.4-alpha to Eole 2.4-alpha2
changement de roadmap car pas assez de recul pour qualifier :)
#7 Updated by Joël Cuissinat almost 10 years ago
- Status changed from Résolu to Fermé
Problèmes de ce genre non reproduits récemment :)