Bonjour,
Pour faire suite à nos échanges récents avec @Loic sur le nouveau moteur de cache fichiers, j’ai eu ce soir un plantage complet de Jeedom, après avoir mis à jour la version alpha avec les derniers commits.
(ce n’est pas un soucis qu’il ait planté, je préfère préciser, ce jeedom est là pour tester justement et j’ai pu le faire repartir en restaurant le dernier snapshot à ce matin)
Pour reproduire le plantage :
- J’étais déjà avec le moteur de cache « Fichier (beta) ». (important pour reproduire)
- Je partais de l’alpha mise à jour le 20/07/2023 à 20h42, donc avant les optimisation de Loic pour utilser serialize et unserialize en lieu et place de json_decode (bonne idée d’ailleurs en passant pour optimiser la vitesse du cache
)
Je précise que jusque là, le nouveau cache fichiers fonctionnait bien, pas de soucis à noter.
Ayant vu passer les commits sur le git, je me suis dit que j’allais rafraichir l’image alpha, ce que j’ai fait, et patatra !
Déjà pendant la mise à jour, elle se bloque à 60% :
Et dans les logs je repère un message d’erreur qui correspond à un changement que j’ai vu passer dans les commits (du coup si ca peut aider je le met ici) :
0096|[START CONSISTENCY]
0097|[START CHECK AND FIX DB]
0098|Fix : ALTER TABLE `cache` MODIFY COLUMN `datetime` int(11) NULL
0099|Fix : ALTER TABLE `cache` MODIFY COLUMN `datetime` int(11) NULL***ERROR*** [MySQL] Error code : 22003 (1264). Out of range value for column 'datetime' at row 1 : ALTER TABLE `cache` MODIFY COLUMN `datetime` int(11) NULL
0100|[END CHECK AND FIX DB]
0101|Check jeedom package...OK
0102|Check jeedom database...
0103|Fix : ALTER TABLE `cache` MODIFY COLUMN `datetime` int(11) NULL
0104|Fix : ALTER TABLE `cache` MODIFY COLUMN `datetime` int(11) NULL***ERROR*** [MySQL] Error code : 22003 (1264). Out of range value for column 'datetime' at row 1 : ALTER TABLE `cache` MODIFY COLUMN `datetime` int(11) NULL
0105|Check crons...
0106|Check filesystem right...
0107|OK
j’ai laissé tourner un bon moment la mise à jour, mais au final plus rien ne se passait à l’écran, ni dans le linux en dessous.
J’ai voulu lancer un reboot du Jeedom (via le menu) et là l’ensemble des démons en tests sur ce jeedom affichent un message d’erreur :
et au reboot, pire, plus rien ne fonctionne, j’ai juste ca qui s’affiche :
Bref, Jeedom ne veut plus rien savoir, je passe en mode cli sous Linux, pour restaurer la dernière sauvegarde, mais pas mieux, jeedom continue de planter sur la même commande :
php /var/www/html/install/restore.php
[START RESTORE]
***************Begin Jeedom restore 2024-07-22 20:16:21***************
Send begin restore event...OK
Checking rights...PHP Notice: unserialize(): Error at offset 0 of 64 bytes in /var/www/html/core/class/cache.class.php on line 499
PHP Fatal error: Uncaught Error: Call to a member function getLifetime() on bool in /var/www/html/core/class/cache.class.php:500
Stack trace:
#0 /var/www/html/core/class/cache.class.php(105): FileCache::fetch()
#1 /var/www/html/core/class/jeedom.class.php(1796): cache::byKey()
#2 /var/www/html/core/class/system.class.php(90): jeedom::isCapable()
#3 /var/www/html/core/class/jeedom.class.php(1717): system::getCmdSudo()
#4 /var/www/html/install/restore.php(81): jeedom::cleanFileSystemRight()
#5 {main}
thrown in /var/www/html/core/class/cache.class.php on line 500
Je restaure donc la VM à ce matin, et je recommence ! (oui j’insiste ) pareil = c’est reproductible (sur ce jeedom en tout cas)…
PAR CONTRE : (j’ai encore restauré une deuxième fois, puis une troisième pour tester) :
- Si je change le moteur de cache AVANT de lancer la mise à jour (en repassant sur l’ancien moteur de cache fichiers), là la mise à jour passe, et je n’ai pas de plantage de Jeedom.
Et ensuite, même si je remet le moteur de cache fichier beta, tout fonctionne, cela semble lié au process de mise à jour.
Bonne soirée,
TiTidom.