Plantage même lib dans plusieurs plugins

Bonjour à tous!

Il y a quelque temps, lors d’une MAJ de ma version Beta, l’application ne pouvait plus s’ouvrir car ça me plantait systématiquement le Démon.
J’ai donc dû quitter le programme Béta car je me faisait engueuler par ma femme et les enfants :grin:

Mais hier j’ai eu envie de repasser en Béta car je suis les évolutions et ça me donne envie…
Après installation, même chose avec la dernière Béta: plantage immédiat du Démon dès que je lance l’appli sur un des téléphones.

Avant de me faire pourrir par la famille, je suis repassé en stable afin que tout le monde puisse utiliser JC.

J’ai juste noté ce message dans le log JeedomConnet (pas en debug) lors du plantage:

PHP Fatal error:  Cannot redeclare React\Promise\Timer
eject() (previously declared in /var/www/html/plugins/JeedomConnect/3rdparty/vendor/react/promise-timer/src/functions.php:76) in /var/www/html/plugins/TvDomSamsung/3rdparty/vendor/ratchetphp/react/promise-timer/src/functions.php on line 65
[2021-06-22 22:55:13][ERROR] : Erreur sur la fonction deamon_start du plugin : Vous devez attendre au moins 45 secondes entre deux lancements du démon. Dernier lancement : 2021-06-22 22:54:43
[2021-06-22 22:55:24][ERROR] : Erreur sur la fonction deamon_start du plugin : Vous devez attendre au moins 45 secondes entre deux lancements du démon. Dernier lancement : 2021-06-22 22:54:43
PHP Fatal error:  Cannot redeclare React\Promise\Timer
eject() (previously declared in /var/www/html/plugins/JeedomConnect/3rdparty/vendor/react/promise-timer/src/functions.php:76) in /var/www/html/plugins/TvDomSamsung/3rdparty/vendor/ratchetphp/react/promise-timer/src/functions.php on line 65

Je suppose qu’il y a un soucis avec mon plugin TvDomSamsung???
Mais pourquoi ça marche avec la stable et pas avec les Bétas?

une idée là-dessus?

Merci!

Désolé @Xboss06 j’avais pas vu ton mp…

Il me semble que c’est un problème lié à la gestion des extensions de jeedom.
Plusieurs plugin ne peuvent pas utiliser la même lib.
Peut être qu’un dev Jeedom pourrait t’en dire plus…

1 « J'aime »

On peut utiliser la meme, justement si c’est exactement la « même » en utilisant un « require once » pour éviter les redeclaration.
En tout cas avec une compatibilité ascendante et descendante à 100%. En d’autres termes si la signature des méthodes est identique.

Le problème est que comme chaque plug-in va faire son require, c’est le premier qui arrive va charger « sa » version et pour le deuxième Php ne va rien faire car déjà chargée.
Mais si après dans ta class tu appelles une méthode qui n’existe pas ou qui n’a pas la même signature que la version précédemment chargée, ça explose.

Donc il faut essayer de s’aligner sur la version de la lib a utiliser entre plugin ou s’aligner sur celle du core pour certaines pour éviter les conflits.

3 « J'aime »

Merci @jared-94 et @Mips :+1:

Donc que puis-je faire de mon côté si je veux rejoindre le programme Bêta de JC ?

Je dois virer le plugin TvDomSamsung qui utilise la (presque) même lib que Jeedom Connect ?

En fait je comprends pas, beta ou stable le démon utilise cette lib pour le websocket…

Ha zut effectivement ça se complique alors.
Je vais repasser en Béta et me mettre en mode Debug pour voir…

Si tu désactive ton plugin Samsung ça marche ? (Normalement oui)
Mais je suppose que ça resoud pas ton problème

1 « J'aime »

Oui effectivement ça fonctionne parfaitement en désactivant le plugin Samsung!
Bon ben du coup je ne cherche pas plus loin et j’ai installé une alternative au plugin qui pose soucis avec la Béta JC.
Merci @jared-94 et bonne soirée!

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.