Core 4.5 : Interrogation nouveau système de cache

Bonjour à tous,

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 :

CLE = cmdCacheAttr5441
ID = [cmdCacheAttr5441][1]
PATH = /tmp/jeedom/cache/a7/
FILE = 5b636d64436163686541747472353434315d5b315d.doctrinecache.data

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.

J’ai commencé une branche avec ces changements, mais

 
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 ?

 
Vos avis ?

Bad

6 « J'aime »

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….

1 « J'aime »

Ok, je suis en phase, de toute façon MariaDB n’est pas adaptée pour faire du caching.
C’est vraiment utilisé comme méthode ?

Donc autant ne migrer que les systèmes qui utilisent le cache Doctrine vers le nouveau système de cache fichier dans le script d’update.

Par contre, je ne comprends pas l’utilité de la purge du cache en DB dans le script :

Peux-tu m’éclairer ?

1 « J'aime »

Mariadb en cache c’est pour quelques client bien particulier il est lent mais garantie aucune perte.

Pour le truc à te c’est du au changement de format de la colonne datetime qui n’est possible que si la table est vide.

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).

7 « J'aime »

Hello,

Merci pour la réflexion que tu continues de mener à ce sujet.

J’ai migré mon environnement de dev il y a quelques jours en 4.5 il faut que je vois si je peux revenir en 4.4.18 pour tester.

Comment est-ce que l’on pourrait le valider de notre coté ?

1 « J'aime »

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.

Bonjour,
Après test ca semble bon de mon coté.

5 « J'aime »

Hello
Test effectué et ok également chez moi.

1 « J'aime »