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
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:
-
Configurar Redis para o ambiente do Adobe Commerce.
-
Crie várias categorias de produtos na loja.
-
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.
-
Enquanto o script envia solicitações para a página de categoria, execute uma limpeza de cache
block_htmle execute o trabalho cronbackend_clean_cachevárias vezes. -
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:
- Adobe Commerce ou Magento Open Source local: Quality Patches Tool > Uso no guia Quality Patches Tool.
- Adobe Commerce na infraestrutura em nuvem: Atualizações e patches > Aplicar patches no guia do Commerce na infraestrutura em nuvem.
Leitura relacionada
Para saber mais sobre Quality Patches Tool, consulte:
- Quality Patches Tool: uma ferramenta de autoatendimento para patches de qualidade no guia Ferramentas.