Alors… J’y ai passé quelques heures, mais je pense avoir une solution : le problème c’est le changement de nom de fichier entre le nouveau système de cache de fichier et \Doctrine\Common\Cache\FilesystemCache.
Le cache Doctrine étant construit pour disposer de namespaces et des versions que Jeedom n’utilise pas (car ce n’est pas nécessaire), or les ID utilisé dans le cache Doctrine sont construits sous la forme : %NAMESPACE%[%KEY%][%VERSION%].
Du coup, une CLE cache Jeedom cmdCacheAttr5441 est en fait enregistrée sous l’ID [cmdCacheAttr5441][1] (pas de namespace et toujours version=1). Une fois qu’on sait ça, il facile de retrouver les ID à partir des CLE.
Ensuite, le fichier est enregistré dans un répertoire construit en prenant les 2 premiers caractères du hash en sha256 de l’ID et le nom du fichier en prenant le bin2hex() de l’ID suffixé avec l’extenssion .doctrinecache.data (sauf si nom de fichier fait plus de 255 caractères, à ce moment là, c’est le hash sha256 de l’ID préfixé par _ et suffixé avec l’extenssion .doctrinecache.data qui est utilisé), par ex :
Sachant tout ça, il est facile de revoir les fonction de la classe FileCache du Core 4.5 pour réutiliser ces fichiers à l’identique, sans perte du cache.
Sachant que chaque fichier contient un objet sérialisé, il est donc possible aussi de simplement parcourir tous les fichiers de l’ancien cache, récupérer les objets et les sauvegarder dans le nouveau cache (MariadbCache ?) dans le script post-install.
Je me demande s’il ne serait donc pas plus simple d’imposer le MariadbCache et migrer les clés présentes dans le cache Doctrine ou le FileCache ?
Bonjour
Mariadbcache eet pas top c’est la pour les entreprises qui ne peuvent pas tolérer la perte de la moindre valeur mais il est très lent et il est pénible sur la taille des objets stocké. Donc il faut rester en filesystem avec le nouveau système de cache. Par contre faut faire attention tout est dans le même répertoire, attention aussi le format du date Time du cache change pour aller plus vite. Autre point à faire attention c’est ceux en redis car pareil pour eux y’a une migration….
Bonjour,
Pour info je viens de pousser ce qu’il faut pour pas perdre le cache (pas tester encore). Dans l’idée il faut forcer une maj de jeedom 4.4 meme si il ne propose rien (une fois validé il y aura bien sur une nouvelle version de la 4.4). Cette version silencieuse (pour le moment) fait un export du cache des cmd et eqLogic en json dans un fichier.
Ensuite lors du passage en 4.5 si jeedom voit ce fichier (et uniquement lors de la maj en 4.5) il recharge les valeurs. C’est a tester car j’ai un doute que ca marche ca (pas sur que suite a la maj de la 4.5 je sois deja avec le nouveau cache je me demande si je suis pas toujours avec l’ancien).
Bonjour,
Un virtuel que tu crée tu lui set une valeur a 8 par exemple
Tu crée un mode avec été hivers tu le mets sur hivers
Tu mets a jour en stable 4.4 tu regardes ton virtuel et ton mode il devrait etre à 8 et hivers.
Tu mets a jour en beta 4.5 tu regardes ton virtuel et ton mode il devrait etre à 8 et hivers.