Projet

Général

Profil

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

Ajouté par Bruno Boiget il y a presque 9 ans. Mis à jour il y a presque 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
15/04/2015
Echéance:
% réalisé:

100%

Temps estimé:
4.00 h
Temps passé:
Restant à faire (heures):
0.0

Révisions associées

Révision a07fb161 (diff)
Ajouté par Bruno Boiget il y a presque 9 ans

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

Révision 1c4fc31f (diff)
Ajouté par Bruno Boiget il y a presque 9 ans

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

ref #11431 @5m

Historique

#1 Mis à jour par Bruno Boiget il y a presque 9 ans

  • Statut changé de Nouveau à En cours

#2 Mis à jour par Bruno Boiget il y a presque 9 ans

  • Statut changé de En cours à Nouveau
  • Temps estimé mis à 4.00 h
  • Restant à faire (heures) mis à 3.0
  • Distribution changé de EOLE 2.5 à 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 Mis à jour par Bruno Boiget il y a presque 9 ans

  • Statut changé de Nouveau à En cours

#4 Mis à jour par Bruno Boiget il y a presque 9 ans

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 Mis à jour par Bruno Boiget il y a presque 9 ans

  • Restant à faire (heures) changé de 3.0 à 0.25

#6 Mis à jour par Bruno Boiget il y a presque 9 ans

  • % réalisé changé de 0 à 100

#7 Mis à jour par Scrum Master il y a presque 9 ans

  • Statut changé de En cours à Résolu

#8 Mis à jour par Joël Cuissinat il y a presque 9 ans

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) changé de 0.25 à 0.0

Formats disponibles : Atom PDF