Redis unserialize error setup:static-content:deploy
Cet article fournit un correctif pour l’erreur Redis unserialize lors de l’exécution de magento setup:static-content:deploy
.
L'exécution de magento setup:static-content:deploy
provoque l'erreur Redis :
[Exception]
Notice: unserialize(): Error at offset 0 of 1 bytes in
/var/www/domain.com/vendor/magento/module-config/App/Config/Type/System.php on line 214
Le problème est dû à des processus d’interférence parallèles sur la connexion Redis.
Pour résoudre ce problème, exécutez setup:static-content:deploy
en mode de thread unique en définissant la variable d'environnement suivante :
STATIC_CONTENT_THREADS =1
ou exécutez la commande setup:static-content:deploy
suivie de l’argument -j 1
(ou --jobs=1
).
Notez que la désactivation du multi-thread ralentit le processus de déploiement des ressources statiques.
Versions affectées
- Adobe Commerce sur site : 2.1.2 et versions ultérieures
- Adobe Commerce sur l’infrastructure cloud 2.1.2 et versions ultérieures
- Redis, toute version
Problème
L'exécution de la commande setup:static-content:deploy
provoque l'erreur Redis :
)
[2017-06-02 19:57:59] Command:php ./bin/magento setup:static-content:deploy --jobs=3 en_US
[Exception]
Notice: unserialize(): Error at offset 0 of 1 bytes in /app/<domain>/vendor/magento/module-config/App/Config/Type/System.php
on line 214
.....
[CredisException]
read error on connection
[RedisException]
read error on connection
.....
[Exception]
Notice: unserialize(): Error at offset 0 of 1 bytes in /app/<domain>/vendor/magento/module-config/App/Config/Type/System.php
on line 214
.....
[RuntimeException]
Command php ./bin/magento setup:static-content:deploy --jobs=3 en_US returned code 3
Cause
Le problème est dû à des processus d’interférence parallèles sur la connexion Redis.
Ici, un processus dans App/Config/Type/System.php
attendait une réponse pour system_defaultweb
, mais a reçu une réponse pour system_cache_exists
qui a été effectuée par un autre processus. Consultez l’explication détaillée dans la publication de Jason Woods.
Solution
Désactivez le parallélisme et exécutez setup:static-content:deploy
en mode mono-thread en définissant la variable d'environnement suivante :
STATIC_CONTENT_THREADS =1
Vous pouvez également exécuter la commande setup:static-content:deploy
suivie de l’argument -j 1
(ou --jobs=1
).
Informations supplémentaires
Dans notre documentation destinée aux développeurs :