[Somente PaaS]{class="badge informative" title="Aplica-se somente a projetos do Adobe Commerce na nuvem (infraestrutura do PaaS gerenciada pela Adobe) e a projetos locais."}

ACSD-63687: Preços incorretos são exibidos devido a Redis problemas de limpeza de cache

O patch ACSD-63687 corrige o problema em que preços incorretos são exibidos quando o coletor de lixo do cache do Redis é executado sem o modo LUA, causando condições de corrida. Este patch está disponível quando o Quality Patches Tool (QPT) 1.1.77 está instalado. A ID do patch é ACSD-63687. Observe que esse problema está programado para ser corrigido no Adobe Commerce 2.4.9.

Produtos e versões afetados

O patch foi criado para a versão do Adobe Commerce:

  • Adobe Commerce (todos os métodos de implantação) 2.4.5-p9

Compatível com as versões do Adobe Commerce:

  • Adobe Commerce (todos os métodos de implantação) 2.4.5 - 2.4.6-p13
NOTE
O patch pode se tornar aplicável a outras versões com as novas versões do Quality Patches Tool. Para verificar se o patch é compatível com a sua versão do Adobe Commerce, atualize o pacote magento/quality-patches para a versão mais recente e verifique a compatibilidade na Quality Patches Tool: página Procurar patches. Use a ID do patch como palavra-chave de pesquisa para localizar o patch.

Problema

Os preços são exibidos incorretamente porque a limpeza do cache Redis falhou.

Etapas a serem reproduzidas:

  1. Configurar Redis para o ambiente do Adobe Commerce.

  2. Crie várias categorias de produtos na loja.

  3. Crie um script que envia solicitações recorrentes a uma página de categoria. Use um script JMeter ou uma ferramenta de teste de carga equivalente.

  4. Enquanto o script envia solicitações para a página de categoria, execute uma limpeza de cache block_html e execute o trabalho cron backend_clean_cache várias vezes.

  5. Execute o script fornecido para identificar Redis registros de chave de cache que não existem no conjunto de cache MAGE. Atualize a porta Redis e o prefixo da marca de cache do MAGE para corresponder à configuração de projeto 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:

As chaves de cache sem registros correspondentes não são criadas em Redis, e o trabalho do Cron backend_clean_cache limpa as entradas de cache corretamente.

Resultados reais:

As chaves de cache são criadas em Redis sem registros correspondentes, portanto, a limpeza de cache acionada pelo cron backend_clean_cache não funciona.

Aplicar o patch

Para aplicar patches individuais, use os links a seguir, dependendo do método de implantação:

Leitura relacionada

Para saber mais sobre Quality Patches Tool, consulte:

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