Pouvoir relancer un enrichissement uniquement sur les lignes en erreurs
Votre demande de fonctionnalité est-elle liée à un problème ? Veuillez le décrire.
Lorsque l'on exécute un enrichissement sur la totalité d'un jeu de données, il arrive que certains documents ressortent en erreur (par exemple pour coupure/lenteur réseau passagère) Tous les documents ne sont donc pas correctement enrichis. Si on relance l'enrichissement, il re-parcours l'intégralité du jeu de données et relance les enrichissements sur chaque champ. Si l'option cache est activée, les web services ne seront pas forcément appelés mais néanmoins tous les documents seront mis à jour.
On peut également créer un nouveau enrichissement pour sélectionner les erreurs et rejouer uniquement le traitement sur les documents concernés
Décrivez la solution que vous souhaitez Lodex pourrait proposer de lancer l'enrichissement uniquement sur les valeurs en erreurs
En théorie cela reviendrait à modifier la requête mongo en ajoutant un filtre
pour voir un signal d'erreur tester par exemple une fonction bidon
[assign] path=value value=get('value.isFunded').thru(v=>v=== false ? _.plouf(v) : v)
La colonne s'affiche en orange avec le nombre d'erreurs rencontrées
et un message affiche l'erreur lorsque l'on clique sur une case en question
Merci @AnaelKremer,
J'ai ajouté la solution vue ensemble dans la carte
visiblement quelque chose a changé au niveau des erreurs (@touv) , on n'a plus la mention erreur avec une pastille rouge dans les données, ni de détails sur l'erreur. J'ai utilisé la même fonction que dans l'exemple plus haut
Du coup les données ne sont plus considérées comme des erreurs
visiblement quelque chose a changé au niveau des erreurs (@touv) , on n'a plus la mention erreur avec une pastille rouge dans les données, ni de détails sur l'erreur.
effectivement, le changement vient de cette demande https://github.com/Inist-CNRS/lodex/issues/1978 il va falloir trouver un compromis ...
Je n'ai pas l'impression que seules les lignes en erreur sont relancées. Tout semble être retraité. Mettre en rouge l'information quand il y a des erreurs ? Possibilité de supprimer le S de erreurs pour les valeurs : 0 et 1 ? Mettre en français ? Erreur et Relancer à la place de errors (colonne) et RETRY à droite du nombre d'erreurs
(même constat qu'Anaël concernant les messages d'erreurs)
En fait ça dépend de ce ce que l'on appelel une erreur. dans la datagrid il faut que le texte commence [Error]
https://github.com/Inist-CNRS/lodex/blob/6c98940bf59047e4b3433fc31b803733354a7485/src/app/js/admin/parsing/ParsingResult.js#L201
Dans les enrichissements, il faut un certain type d'erreur informatique pour générer automatiquement un message [Error] qui sera affichée mais actuellement les erreurs lodash des enrichissements ne sont pas comprises comme des erreurs
Ok mais dans l'exemple de la fonction .plouf on avait bien [error] plouf is not a function auparavant.
La carte 1978 c'est moi qui l'avait fait à la base, et l'idée en fait était de pouvoir visualiser [error] plouf is not a function dans l'aperçu des données du mode enrichissement (sans devoir lancer l'enrich, puis aller voir le message dans la datagrid).
Peut être que ce n'est pas faisable ou que l'on s'était mal compris à l'époque.
Car au final avant on avait "null" et maintenant on a "item 1..." sans mention de l'erreur, ni d'erreur detecté. A la limite, si on ne peut pas implémeter "[error]..." il faut peut être revenir à l'ancien usage qui ne permettait de voir l'erreur qu'après lancement, étant donné qu'on aura un système de gestion des erreurs ???
oui, on affiche bien l'erreur dans la preview, mais que le début et pas l'information important qui est tronquée. C'est à améliorer.
pour cette carte par contre, il faudrait faire en sorte que les erreurs lodash soient également comprises comme des erreurs "normales"
Effectivement, il faudrait préfixer le message d'erreur par [Error]: . Veux-tu t'en occuper ou je créé une carte @touv ?
Effectivement, il faudrait préfixer le message d'erreur par [Error]: . Veux-tu t'en occuper ou je créé une carte @touv ?
Peut-être mais pas tout de suite. Avant, j'aimerais comprendre pourquoi la modification précédente à changer le comportement des erreurs.
J'ai fait une modification pour prendre en compte les erreurs lodash
#2314
avec cette modification, ce type d'erreur est bien considéré par le système de relance.
On peut tester avec l'enrichissement suivant :
; Génère une erreur si le titre contient la lettre "b"
[assign]
path = value
value = get('value.title').thru(item => String(item).search(/b/) >= 0 ? toto : item )
après exécution on peut modifier le script pour le relancer uniquement sur les erreurs
; Affiche 'toto' si le titre contient la lettre "b"
[assign]
path = value
value = get('value.title').thru(item => String(item).search(/b/) >= 0 ? 'toto' : item )
on sauvegarde et on revient sur la page des enrichissements pour relancer l’exécution uniquement sur les erreurs dans ce cas de figure, peut-être qu'il serait plus simple d'avoir un bouton de relance sur les erreurs directement sur la fiche de l'enrichissement. ce qui éviterait de revenir à la liste pour lancer le traitement
On n'a bien récupéré des erreurs avec possibilité de retry, mais comme l'avait dit Valérie plus haut, d'après les logs, toutes les lignes sont relancés et pas seulement les lignes en erreur.
Pour tester vous pouvez créer un enrichissement qui échoue aléatoirement
Par exemple sur un champ enrichissement pour un champ Titre:
[assign]
path = value
value = get('value.Titre').thru(item => {if (Math.random() >= 0.9) {throw new Error('Random error');} return item;})
L'enrichissement a bien été relancé uniquement sur les lignes en erreur, dans l'exemple-ci une seule erreur retraitée dans les logs
Testé en 14.0.74 :
OK pour moi également.