Project

General

Profile

Tâche #11431

Scénario #11288: Résoudre les problèmes d'instabilité constatés sur Zéphir 2.3.16

Impossibilité de relancer le service zephir quand certaines tâches sont en cours

Added by Bruno Boiget over 6 years ago. Updated over 6 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
04/15/2015
Due date:
% Done:

100%

Estimated time:
4.00 h
Spent time:
Remaining (hours):
0.0

Associated revisions

Revision a07fb161 (diff)
Added by Bruno Boiget over 6 years ago

Optimisations pour permettre l'arrêt du service pendant la mise en cache

  • Nouvelle méthode de chargement du cache Creole pour éviter les blocages
    de la boucle principale (selon le mode threadé ou non)
  • boucle d'attente et kill -9 si besoin dans le script d'arrêt
  • affichage des erreurs d'envoi de mails dans les logs

ref #11431 @4h

Revision 1c4fc31f (diff)
Added by Bruno Boiget over 6 years ago

Log manquant en fin de mise en cache (mode threadé)

ref #11431 @5m

History

#1 Updated by Bruno Boiget over 6 years ago

  • Status changed from Nouveau to En cours

#2 Updated by Bruno Boiget over 6 years ago

  • Status changed from En cours to Nouveau
  • Estimated time set to 4.00 h
  • Remaining (hours) set to 3.0
  • Distribution changed from EOLE 2.5 to Toutes

Problème constaté lors de la correction des problèmes de segfault.

Lorsque certaines tâches automatiques sont en cours, le service zephir ne s'arrête pas correctement ('service zephir stop' indique que l'arrêt est fait mais le processus tourne toujours).

  • chargement du cache des configurations (cas le plus problèmatique)
  • boucle de vérification des serveurs en timeout

Exemple en affichant les objets créés dans le cache creole :

Apr 27 11:22:47 zephir zephir_backend: [-] Received SIGTERM, shutting down.
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x52c93b00>
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x563c7368>
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x7fd94c8919e0>
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x73cf4b00>
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x7fd94b460a70>
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x15a96200>
Apr 27 11:22:49 zephir zephir_backend: [-] *** <zephir.utils.creolewrap.ZephirDict instance at 0x59b7c830>

En mode threadé, on peut interrompre les traitements en vérifiant l'état de reactor.running avant chaque chargement de configuration.
Dans le mode non threadé, il faut revoir le fonctionnement de la boucle, reactor.running ne semble pas passer à False tant que le chargement n'est pas fini.

#3 Updated by Bruno Boiget over 6 years ago

  • Status changed from Nouveau to En cours

#4 Updated by Bruno Boiget over 6 years ago

après essai de différentes méthodes, je ne trouve pas de moyen pour arrêter le service proprement lorsque le service est en mode non threadé.

Une approche pour résoudre ce problème pourrait être de mettre en place une boucle d'attente (comme dans le service creole_serv) et d'utiliser un kill -9 si le processus ne s'arrête pas après quelques secondes.

#5 Updated by Bruno Boiget over 6 years ago

  • Remaining (hours) changed from 3.0 to 0.25

#6 Updated by Bruno Boiget over 6 years ago

  • % Done changed from 0 to 100

#7 Updated by Scrum Master over 6 years ago

  • Status changed from En cours to Résolu

#8 Updated by Joël Cuissinat over 6 years ago

  • Status changed from Résolu to Fermé
  • Remaining (hours) changed from 0.25 to 0.0

Also available in: Atom PDF