ACP2E-4603: o produto Permissões de catálogo reindexar deixa linhas de índice de permissão obsoletas e deadlock do MySQL
O patch do ACP2E-4603 corrige o problema em que a reindexação de produto de Permissões de catálogo deixa as linhas de índice de permissão existentes inalteradas, de modo que as concessões de permissão de categoria atualizadas não refletem corretamente nos produtos. Este patch está disponível quando o Quality Patches Tool (QPT) 1.1.79 está instalado. A ID do patch é ACP2E-4603. 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.7-p3
Compatível com as versões do Adobe Commerce:
- Adobe Commerce (todos os métodos de implantação) 2.4.6 - 2.4.7-p9
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
A reindexação de produto das Permissões de catálogo deixa as linhas de índice de permissão existentes inalteradas, portanto, as concessões de permissão de categoria atualizadas não refletem corretamente nos produtos.
Etapas a serem reproduzidas:
-
Ativar permissões de categoria:
- Faça logon no Administrador.
- Vá para Stores > Configuration.
- Em Catalog, selecione Catalog.
- Expandir Category Permissions.
- Defina Enable como Sim.
- Salve a configuração.
-
Crie 50 ou mais grupos de clientes (Opção A ou Opção B):
- Opção A — Administrador: Vá para Customers > Customer Groups e selecione Add New. Insira um nome de grupo (por exemplo,
ACSD70034_01) e selecione a classe de imposto padrão, depois Save. Repita para criar 50 ou mais grupos. - Opção B (recomendado) — API REST: Envie uma solicitação POST para
/rest/V1/customerGroupscom o corpo da solicitação{"group":{"code":"ACSD70034_01","taxClassId":0}}. Repita para criar 50 grupos (ACSD70034_01aACSD70034_50).
- Opção A — Administrador: Vá para Customers > Customer Groups e selecione Add New. Insira um nome de grupo (por exemplo,
-
Adicionar permissões de categoria no Administrador:
- Vá para Catalog > Categories.
- Edite de 10 a 20 ou mais categorias para aumentar a reprodutibilidade.
- Em cada categoria, navegue até Category Permissions e selecione Add Permission.
- Selecione um site (por exemplo, Site principal) e atribua um dos grupos de clientes criados anteriormente.
- Configure Grant Catalog Category View, Grant Product Price e Grant Checkout conforme necessário.
- Selecione Save.
- Escala recomendada: crie um conjunto de dados maior (por exemplo, 20 categorias e 20 a 50 grupos de clientes) para gerar de 400 a 1.000 linhas de permissão.
-
Assegure uma única tabela de índice (padrão):
- Vá para Stores > Configuration > Catalog > Catalog > Category Permissions.
- Se Dimensions ou Indexer Dimensions aparecer, defina-o como Nenhum (não Grupo de Clientes) para usar uma única tabela de índice.
-
Execute reindex com threads paralelos a partir da CLI:
- Exportar
MAGE_INDEXER_THREADS_COUNT=4. - Executar
php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product. - Executar
php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product. - Repita os comandos reset e reindex de 5 a 10 vezes para reproduzir o deadlock durante a execução paralela.
- Exportar
Resultados esperados:
A reindexação é concluída com êxito com threads paralelos e as permissões de categoria atualizadas concedem uma reflexão correta sobre os produtos na tabela magento_catalogpermissions_index_product.
Resultados reais:
Um erro de deadlock do MySQL (1213) ocorre intermitentemente durante a reindexação e os processos filho falham com erros referenciando REPLACE INTO em magento_catalogpermissions_index_replica ou magento_catalogpermissions_index_product.
Mesmo quando a reindexação é concluída sem erros, ela não atualiza as linhas de índice de permissão existentes, portanto, os produtos continuam a refletir as concessões de permissão de categoria obsoletas.
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.