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

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:

  1. Ativar permissões de categoria:

    1. Faça logon no Administrador.
    2. Vá para Stores > Configuration.
    3. Em Catalog, selecione Catalog.
    4. Expandir Category Permissions.
    5. Defina Enable como Sim.
    6. Salve a configuração.
  2. Crie 50 ou mais grupos de clientes (Opção A ou Opção B):

    1. 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.
    2. Opção B (recomendado) — API REST: Envie uma solicitação POST para /rest/V1/customerGroups com o corpo da solicitação {"group":{"code":"ACSD70034_01","taxClassId":0}}. Repita para criar 50 grupos (ACSD70034_01 a ACSD70034_50).
  3. Adicionar permissões de categoria no Administrador:

    1. Vá para Catalog > Categories.
    2. Edite de 10 a 20 ou mais categorias para aumentar a reprodutibilidade.
    3. Em cada categoria, navegue até Category Permissions e selecione Add Permission.
    4. Selecione um site (por exemplo, Site principal) e atribua um dos grupos de clientes criados anteriormente.
    5. Configure Grant Catalog Category View, Grant Product Price e Grant Checkout conforme necessário.
    6. Selecione Save.
    7. 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.
  4. Assegure uma única tabela de índice (padrão):

    1. Vá para Stores > Configuration > Catalog > Catalog > Category Permissions.
    2. Se Dimensions ou Indexer Dimensions aparecer, defina-o como Nenhum (não Grupo de Clientes) para usar uma única tabela de índice.
  5. Execute reindex com threads paralelos a partir da CLI:

    1. Exportar MAGE_INDEXER_THREADS_COUNT=4.
    2. Executar php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product.
    3. Executar php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product.
    4. Repita os comandos reset e reindex de 5 a 10 vezes para reproduzir o deadlock durante a execução paralela.

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:

Leitura relacionada

Para saber mais sobre Quality Patches Tool, consulte:

recommendation-more-help
commerce-operations-help-tools