Anomalie #6970
fermé[Processus/Crontab/CleanContext] Les processus peuvent parfois créer plusieurs instances d'eux-même
0%
Envisager de déposer un lock sur la base le temps des opérations de maintenance pour éviter ce genre de problèmes.
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
Mis à jour par Marc Claverie il y a environ 9 ans
- Statut changé de Nouveau à À analyser
- Assigné à mis à Éric Brison
- Version cible mis à 3.2.23
- Version source changé de 3.2.24 à 3.2.23
Mis à jour par Éric Brison il y a environ 9 ans
- Assigné à changé de Éric Brison à Jérôme Augé
Mis à jour par Jérôme Augé il y a environ 9 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é.