Projet

Général

Profil

Anomalie #6970

[Processus/Crontab/CleanContext] Les processus peuvent parfois créer plusieurs instances d'eux-même

Ajouté par Charles Bonnissent il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Version cible:
Début:
24/04/2017
Echéance:
% réalisé:

0%

Version source:
Solution proposée:

Envisager de déposer un lock sur la base le temps des opérations de maintenance pour éviter ce genre de problèmes.

Principaux fichiers impactés:
Complexité:
Contrôle:
Thème:
Socle technique
Régression:
Non
Jalons: 3.2 R17

Description

Suite au #6969, j'ai investigué et en effet j'ai bien plusieurs documents avec le même name en base

afnor=> select initid, title, id, name, fromid, revdate, cdate from doc where name='opera_proc_msg' and locked != -1;                                           [4/634]

 initid |                  title                   |   id    |      name      | fromid |  revdate   |        cdate
--------+------------------------------------------+---------+----------------+--------+------------+---------------------
 349699 | Envoi des messages ****************** | 1281625 | ****_proc_msg |     37 | 1493028903 | 2017-04-24 12:15:02
   1243 | Envoi des messages ****************** | 1233117 | ****_proc_msg |     37 | 1488338102 | 2017-03-01 04:15:02
 737771 | Envoi des messages ****************** | 1277514 | ****_proc_msg |     37 | 1489029006 | 2017-03-09 04:10:06
(3 lignes)

Les deux documents fantômes sont tous les deux créés à 04 du matin, étonnant je me relève rarement pour modifier la recette à 04h00 du matin !

Mais si je regarde la crontab :

# Every days
02 5 * * * [ -f "$CONTEXT_ROOT"/wsh.php ] && [ ! -f "$CONTEXT_ROOT"/maintenance.lock ] && cd "$CONTEXT_ROOT" && ./wsh.php --api=cleanContext --real=yes > /dev/null

Tous les jours à 05h00 du matin est lancé le clean context (en prenant en compte le décalage GMT) un lien de cause conséquence me semble se dessiner

Historique

#1 Mis à jour par Marc Claverie il y a environ 2 ans

  • Version source changé de 3.2.24 à 3.2.23
  • Version cible mis à 3.2.23
  • Assigné à mis à Éric Brison
  • Statut changé de Nouveau à À analyser

#2 Mis à jour par Éric Brison il y a environ 2 ans

  • Assigné à changé de Éric Brison à Jérôme Augé

#3 Mis à jour par Jérôme Augé il y a environ 2 ans

  • Statut changé de À analyser à Rejeté

L'isolation SQL par défaut de Postgresql (READ COMMITED) bloquera une tentative de modification de tuples modifiés/supprimés par `cleanContext`. Une fois `cleanContext` terminé, le processus sera débloqué et sa requête sera alors honorée (ou rejetée s'il y a une erreur de contrainte)

Ré-ouvrir une demande plus spécifique si un problème avec ce niveau d'isolation par défaut est détecté.

Formats disponibles : Atom PDF