J’ai restauré ma sauvegarde courante sur un Pi avec Raspberry Pi OS 64 bits Bullseye, le même Jeedom est présent de chaque coté : Jeedom 4.4.17 (migré depuis en v4.4.18).
La seule différence que je crois avoir, est la version de Debian : 11 OK / 12 NOK
Je constate qu’un équipement réalisé avec le plugin Script ne fonctionne plus. Si je demande un rafraichissement, il ne se termine pas (il faut rafraichir la page ensuite).
Informations constatées :
Aucun log en erreur
Rafraichissement manuel ne se termine pas
Les informations restent (commande info) restent celle du jour de la sauvegarde
Si j’ouvre l’équipement et me contente de sauvegarder l’exitant, on voit qu’au moins 3 rafraichissements arrivent en même temps (pas de log, pas d’erreur)
Si je duplique le script, j’ai cet écran :
=> mais la copie est bien présente
Ce script contient 3 commandes, en les supprimant une à une, c’est pareil, j’ai le même résultat.
L’équipement en question fonctionne bien sur Debian 11 / Debian 10
Il ne fait que récupérer (voler…) des informations sur 2 sites différents, en ne laissant que l’une ou l’autre des commandes, le problème est le même (ne fonctionne pas et erreur à la copie).
je suspecte que l’on verra une erreur 500 et de multiple appel ajax et le problème (depuis vanillajs? pas l’impression que ca faisait ca avant), en cas d’erreur 500 le javascript réessaye et donc il post 2 fois le save et donc duplicate; j’ai déjà eu ce problème pendant le dev d’un plugin qui provoque une erreur 500 sur mon jeedom avec des commandes et des eqLogic aussi (avec les eqlogic du coup tu te retrouves avec 5 doublons car il y a 5 essais)
tu sais donner dans un Texte préformaté les différentes valeurs à configurer pour pouvoir reproduire stp?
en gros, l’url et la « requête » devrait suffire je pense
et ton équipement est bien actif? car si inactif pas de problème car il n’essaie pas de rafraichir la commande
et si tu refresh la page et que tu refais le save, là plus d’erreur affiché mais en fait il fait les 4 essais qui ont tous une erreur 500
donc l’erreur sur le insert c’est juste du à ca:
le refresh de la commande crash donc erreur 500;
le js fait des retry sauf que sur nouvelle commande il n’a (toujours) pas l’id
donc le backend (php) considère que c’est une nouvelle commande à insert et donc duplicate sur le nom
erreur 500 affichée sur duplicate du nom et pas d’autre essai
alors que si on fait un f5, là
on a bien la commande affiché car elle a bien été sauvée la première fois;
un save va alors provoquer 4 erreurs 500 invisible à l’écran (mais visible dans la console dev) car le refresh de la commande crash toujours
et bien sur la commande n’est jamais mise à jour.
ici la question est pas de savoir si ta syntaxe est bonne ou pas mais en cas de crash lors du refresh, l’exception ne devrait pas avoir d’impact sur le save de la commande => premier bug
possible deuxième bug: si la syntaxe de la commande est correcte (et fonctionne sur une version précédente) alors ca ne devrait pas crash au refresh.
mais donc il y a 2 problèmes distinct à adresser selon moi.
j’ai regardé rapidement hier et mauvaise nouvelle je pense:
D’après moi c’est la lib qui sert au parsing html (phpquery) qui n’est pas compatible php8 et qui crash complétement, même pas moyen d’intercepter une exception.
elle n’est plus maintenue depuis une dizaine d’année donc c’est mort de ce coté
Voila en beta j’ai pousser une correction pour eviter de planter en cas de soucis de refresh (et donc doubler la commande) et une mise a jour de la lib. Il faut mettre a jour la beta et bien relancer les dépendances