Copie d'équipement `eqLogic->copy()` lancée 4 fois

Bonjour,

Afin de trouver une solution au problème remonté par un utilisateur, je teste la copie d’équipement. Il y a bien un souci et comme je n’ai pas de fichier http.error (cf mon autre fil de discussion dédié) je n’en connais pas la source. Néanmoins, je constate que la copie est exécutée 4 fois en tout, sans doute des ré-essais dus à l’erreur de copie, et je ne parviens pas à trouver pourquoi ni où dans le core les trois tentatives supplémentaires sont lancées.

A toute fin utile, voici la page santé de Jeedom :

Je suis certain que la fonction eqLogic->copy() du plugin est lancée 4 fois parce qu’il y a un log en début de fonction qui est répété dans le fichier log du plugin.

Ca dit quelque chose à quelqu’un ou c’est un problème dans mon plugin ?

A+
Michel

Hello,

Voici le log de l’erreur :

Uncaught Error: Call to a member function getId() on bool in /var/www/html/plugins/mymodbus/core/class/mymodbus.class.php:483

Et particulièrement cette ligne :

Toutes tes commandes ne sont pas encore save, mais tu fait une recherche byEqLogicIdCmdName donc en fonction de l’ordre des commandes $copySourceBlob n’est pas encore un object.

Je pense qu’il faudrait plutôt que tu laisse la copie ce faire dans un premier temps, puis ensuite refaire un second foreach pour modifier la config des commandes.

1 « J'aime »

Salut,

Pour info, le même symptôme de répétition va se produire sur un save
De nouveau ce n’est pas le core le problème mais le plugin (j’ai déjà eu le même cas avec le save)

Le truc qu’on devrait modifier dans le js du core c’est de ne pas faire de retry sur un http 500.

Je me demande même si un retry tout court a un sens (excepté peut-être un timeout), car il n’y a aucune raison d’obtenir un résultat différent en renvoyant les mêmes données si on reçoit une code 3xx, 4xx ou 500

1 « J'aime »

Tu m’as perdu : tu écris que le problème vient du plugin puis tu parles de devoir éventuellement modifier le js du core.
Je n’ai aucun problème pour accepter que j’ai fait une boulette dans le plugin, une fois que mon problème de log http.error sera résolu, ce sera plus facile de trouver les erreurs. Mais là je ne sais pas si ça vient aussi du core…

Merci à vous deux pour vos réponses.

il y a 2 points:

  1. tu as un bug dans ton plugin qui provoque une erreur 500, ca c’est la root cause
  2. le js du core (au moins sur la partie gestion équipement (save & copy) est prévu pour réessayer s’il ne recoit pas un statut 200, ca provoque la répétition; et ce comportement (tenter de réessayer) n’a pas de sens selon moi, aucune raison que ca se passe mieux avec une nouvelle tentative, ca ne fait que provoquer des erreurs en chaine