Exemple de lectures des actions EpiCraft

Edit me

Introduction

Cet article est la retranscription d’une réponse de BFU à WSY suite à un problème de publication bloquée sur EpiCraft. Il peut être intéressant comme cas d’école ou parce qu’il permet de voir comment lire les actions EpiCraft.

Pour information, un deuxième article connexe : Comment savoir qui a fait quoi dans EpiCraft ?

1 La démarche d’analyse des actions

Dans tes logs, je vois plusieurs fois ceci :

Element not found for parameters: editor_id = gnkonqzjwv1505324228353

C’est ce qu’on obtient lorsqu’on fait une action qui implique un élément déjà supprimé. Par exemple :

  • Renommer un champ déjà supprimé
  • Essayer de supprimer un champ déjà supprimé
  • Voir même déplacer un composant sous un composant déjà supprimé

La démarche à suivre, dans ce cas là, est souvent de faire une recherche dans les actions qui contiennent gnkonqzjwv1505324228353 pour retrouver ce qui s’est passé chronologiquement et agir en conséquence.

1.1 Première analyse : l’historique du composant gnkonqzjwv1505324228353

Dans ton cas, j’ai fait cette recherche dans la liste des actions :

  • Projet = coiseychellles
  • ID action =
  • Detail = gnkonqzjwv1505324228353

Et, les actions nous disent ceci (j’ai sauté quelques lignes peu intéressantes) :

{"meta":{"author":"a.razafindranovona","date":1505324228357,"id":"zslmkezftc1505324228357"},"project":"bijasgrsql1502716941323","operator":"add","type":"component","id":"gnkonqzjwv1505324228353","parameters":{"position":{"positioning":"inside","reference":"zybtcjkjlc1505324224544"},"attributes":{"_locked":false,"label":"Bouton","hideLabel":false,"saveOnClick":true,"action":"none","value":"","keepContext":false,"conditionalDisplay":"","classname":"","subtype":"button"}}}

Traduction : a.razafindranovona crée le composant gnkonqzjwv1505324228353 qui est un bouton à l’intérieur de composant zybtcjkjlc1505324224544 (sans doute un groupe)..

{"meta":{"author":"a.razafindranovona","date":1505324237565,"id":"oicgccbitu1505324237565"},"project":"bijasgrsql1502716941323","operator":"alter","id":"gnkonqzjwv1505324228353","type":"component","parameters":{"attributes":{"label":"Cancel"}}}

Traduction : a.razafindranovona édite le composant gnkonqzjwv1505324228353 pour en changer le label.

{"meta":{"author":"w.saumtally","date":1509430978567,"id":"utvajgbhta1509430978567"},"project":"bijasgrsql1502716941323","operator":"alter","id":"gnkonqzjwv1505324228353","type":"component","parameters":{"position":{"positioning":"inside","reference":"ijqijwjicw1509430976707"}}}

Traduction : w.saumtally édite le composant gnkonqzjwv1505324228353 pour le déplacer à l’intérieur du composant ijqijwjicw1509430976707 (sans doute un groupe).

{"meta":{"author":"l.flachet","date":1516602443417,"id":"zrvlcmaknz1516602443417"},"project":"bijasgrsql1502716941323","operator":"add","type":"component","id":"edixfxojag1516602443414","parameters":{"position":{"positioning":"before","reference":"gnkonqzjwv1505324228353"},"attributes":{"subtype":"columns"}}}

Traduction : l.flachet crée le composant edixfxojag1516602443414 qui est un groupe de colonnes au dessous du composant gnkonqzjwv1505324228353.

{"meta":{"author":"l.flachet","date":1516602443418,"id":"brtfoblveq1516602443418"},"project":"bijasgrsql1502716941323","operator":"alter","id":"gnkonqzjwv1505324228353","parameters":{"position":{"positioning":"inside","reference":"blruzldbow1516602443418"}}}

Traduction : l.flachet édite le composant gnkonqzjwv1505324228353 pour le déplacer à l’intérieur du composant blruzldbow1516602443418 (sans doute un groupe).

{"meta":{"author":"l.flachet","date":1516622218614,"id":"ryxmihvyzf1516622218614"},"project":"bijasgrsql1502716941323","operator":"remove","type":"component","id":"gnkonqzjwv1505324228353"}

Traduction : l.flachet supprime le composant gnkonqzjwv1505324228353.

A première vue, je ne vois rien de choquant ici : il n’arrive rien au composant gnkonqzjwv1505324228353 après sa suppression par Loïc par exemple.

1.2 Deuxième analyse : l’historique du composant qui contenait le composant gnkonqzjwv1505324228353

On voit qu’avant sa suppression, notre composant gnkonqzjwv1505324228353 était à l’intérieur du composant blruzldbow1516602443418 (avant dernière action ci-dessus). J’ai donc cherché ce qui était arrivé à ce composant :

  • Projet = coiseychellles
  • ID action =
  • Detail = blruzldbow1516602443418

Et j’obtiens ceci :

{"meta":{"author":"l.flachet","date":1516602519706,"id":"ocaicqforj1516602519706"},"project":"bijasgrsql1502716941323","operator":"remove","type":"component","id":"blruzldbow1516602443418"}

Traduction : l.flachet supprime le composant blruzldbow1516602443418.

Donc, si on reprend chronologiquement :

  1. Au temps 1516602443418, Loïc place notre bouton gnkonqzjwv1505324228353 dans le composant blruzldbow1516602443418.
  2. Au temps 1516602519706, Loïc supprime le composant blruzldbow1516602443418 qui contient gnkonqzjwv1505324228353.
  3. Au temps 1516622218614, Loïc supprime le composant gnkonqzjwv1505324228353.

(ici, un schéma à reprendre dans le mail 24/01/2018 éventuellement)

Là, il y a un truc louche ; d’après ces actions, le composant gnkonqzjwv1505324228353 a été supprimé deux fois :

  • La première fois lorsque Loïc a supprimé son contenant (action n°2 ci-dessus).
  • La deuxième fois lorsque Loïc a supprimé le composant lui-même (action n°3 ci-dessus).

Il est donc logique que l’éditeur te réponde Element not found for parameters: editor_id = gnkonqzjwv1505324228353 lorsqu’il essaie de jouer la deuxième action : l’élément gnkonqzjwv1505324228353 a déjà été supprimé plus tôt.

La question est, comment ceci a pu arriver ?

1.3 Troisième analyse : les actions supprimées

On a rarement besoin de le faire, mais Régis est allé consulté les actions supprimées pour comprendre.

Il a trouvé celle-ci :

{"meta":{"author":"l.flachet","date":1516602513737,"id":"hbkqjravxj1516602513737"},"project":"bijasgrsql1502716941323","operator":"alter","id":"gnkonqzjwv1505324228353","type":"component","parameters":{"position":{"positioning":"before","reference":"edixfxojag1516602443414"}}}

Traduction : l.flachet édite le composant gnkonqzjwv1505324228353 pour le déplacer à l’intérieur du composant edixfxojag1516602443414 (sans doute un groupe).

Avec ce nouvel élément, on peut reconstituer la chronologie complète :

  1. Au temps 1516602443418, Loïc place notre bouton gnkonqzjwv1505324228353 dans le composant blruzldbow1516602443418.
  2. Au temps 1516602513737, Loïc place notre bouton gnkonqzjwv1505324228353 dans le composant edixfxojag1516602443414. <= L’action qui a été supprimée
  3. Au temps 1516602519706, Loïc supprime le composant blruzldbow1516602443418 qui contient pas gnkonqzjwv1505324228353 finalement puisqu’il a été déplacé avant.
  4. Au temps 1516622218614, Loïc supprime le composant gnkonqzjwv1505324228353.

(ici, un schéma à reprendre dans le mail 24/01/2018 éventuellement)

Et là, les choses redeviennent logiques : notre composant n’a pas été supprimé deux fois. C’est la suppression de l’action qui a causé le problème.

Ceci illustre bien mes nombreuses mises en garde concernant la suppression des actions dans EpiCraft. Il peut être difficile d’en prévoir les conséquences et une erreur peut coûter beaucoup de temps à analyser et corriger.

Je ne sais pas si elle est d’une grande clarté, mais je vais sans doute mettre cette explication sur les actions EpiCraft dans le wiki comme cas d’école.

2 Les différences entre les environnements

Dans ton mail Waseem, tu nous dis que tu obtiens l’erreur sur ton poste en local. Je suis allé voir dans EpiCraft et la préproduction est à jour.

Comment est-ce possible ?

  1. Le plus probable est qu’il ce soit passé ceci :
  2. Les actions sont toutes dans EpiCraft.
  3. Elles sont publiées vers la préprod (et ça fonctionne) ; elle devient donc “à jour”.
  4. Arihanta supprime l’action.
  5. Tu essaies de mettre à jour ton appli en local et tu obtiens l’erreur parce qu’il manque cette fois-ci l’action supprimée.

3 La correction

La solution la plus propre semble être de dé-supprimer l’action qui avait été supprimée.

Régis va s’en occuper et te prévenir quand c’est fait.