ACSD-63687: se muestran precios incorrectos debido a Redis problemas de limpieza de caché
El parche ACSD-63687 corrige el problema en el que se muestran precios incorrectos cuando el recolector de elementos no utilizados de caché Redis se ejecuta sin el modo LUA, lo que provoca condiciones de carrera. Esta revisión está disponible cuando está instalado Quality Patches Tool (QPT) 1.1.77. El ID del parche es ACSD-63687. Este problema está programado para solucionarse en Adobe Commerce 2.4.9.
Productos y versiones afectados
El parche se ha creado para la versión de Adobe Commerce:
- Adobe Commerce (todos los métodos de implementación) 2.4.5-p9
Compatible con versiones de Adobe Commerce:
- Adobe Commerce (todos los métodos de implementación) 2.4.5 - 2.4.6-p13
magento/quality-patches a la última versión y compruebe la compatibilidad en la página Quality Patches Tool: buscar parches . Utilice el ID de parche como palabra clave de búsqueda para localizar el parche.Problema
Se muestran precios incorrectos porque la limpieza de la caché de Redis falla.
Pasos a seguir:
-
Configure Redis para el entorno de Adobe Commerce.
-
Cree varias categorías de productos en la tienda.
-
Cree un script que envíe solicitudes recurrentes a una página de categoría. Utilice un script JMeter o una herramienta de prueba de carga equivalente.
-
Mientras el script envía solicitudes a la página de categoría, realice una limpieza de caché de
block_htmly ejecute el trabajo cron debackend_clean_cachevarias veces. -
Ejecute el script proporcionado para identificar Redis registros de claves de caché que no existen en el conjunto de caché MAGE. Actualice el puerto Redis y el prefijo de etiqueta de caché MAGE para que coincidan con la configuración del proyecto local.
code language-none #!/bin/bash REDIS_PORT=6379 REDIS_DB=0 SET_NAME="zc:ti:af6_MAGE" redis-cli -p $REDIS_PORT -n $REDIS_DB keys "zc:k:*" | while read KEY; do STRIPPED_KEY=${KEY#"zc:k:"} EXISTS=$(redis-cli -p $REDIS_PORT -n $REDIS_DB sismember "$SET_NAME" "$STRIPPED_KEY") if [ "$EXISTS" -eq 0 ]; then TIMESTAMP=$(redis-cli -p $REDIS_PORT -n $REDIS_DB hget "$KEY" "m") if [ -n "$TIMESTAMP" ]; then FORMATTED_TIME=$(date -r "$TIMESTAMP" +"%y-%m-%d %H:%M:%S") echo "$KEY - m: $FORMATTED_TIME" else echo "$KEY - m: (null)" fi fi done
Resultados esperados:
Las claves de caché sin los registros correspondientes no se crean en Redis y el trabajo Cron de backend_clean_cache limpia correctamente las entradas de caché.
Resultados reales:
Las claves de caché se crean en Redis sin los registros correspondientes, por lo que la limpieza de caché desencadenada por el cron backend_clean_cache no funciona.
Aplicar el parche
Para aplicar parches individuales, utilice los siguientes vínculos según el método de implementación:
- Adobe Commerce o Magento Open Source local: Quality Patches Tool > Uso en la guía Quality Patches Tool.
- Adobe Commerce en la infraestructura de la nube: Actualizaciones y parches > Aplicar parches en la guía Commerce en la infraestructura de la nube.
Lectura relacionada
Para obtener más información sobre Quality Patches Tool, consulte:
- Quality Patches Tool: herramienta de autoservicio para parches de calidad en la guía Herramientas.