[Solo PaaS]{class="badge informative" title="Se aplica solo a proyectos de Adobe Commerce en la nube (infraestructura PaaS administrada por Adobe) y a proyectos locales."}

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
NOTE
El parche podría ser aplicable a otras versiones con las nuevas versiones de Quality Patches Tool. Para comprobar si el parche es compatible con su versión de Adobe Commerce, actualice el paquete 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:

  1. Configure Redis para el entorno de Adobe Commerce.

  2. Cree varias categorías de productos en la tienda.

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

  4. Mientras el script envía solicitudes a la página de categoría, realice una limpieza de caché de block_html y ejecute el trabajo cron de backend_clean_cache varias veces.

  5. 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:

Lectura relacionada

Para obtener más información sobre Quality Patches Tool, consulte:

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3