ACP2E-4603: la reindicizzazione del prodotto delle autorizzazioni del catalogo lascia righe di indice delle autorizzazioni non aggiornate e deadlock MySQL

La patch ACP2E-4603 risolve il problema per cui la reindicizzazione del prodotto delle autorizzazioni del catalogo lascia invariate le righe dell’indice delle autorizzazioni esistenti, pertanto le autorizzazioni della categoria aggiornate non si riflettono correttamente sui prodotti. Questa patch è disponibile quando è installato Quality Patches Tool (QPT) 1.1.79. L’ID della patch è ACP2E-4603. Questo problema è pianificato per la risoluzione in Adobe Commerce 2.4.9.

Prodotti e versioni interessati

La patch è stata creata per la versione di Adobe Commerce:

  • Adobe Commerce (tutti i metodi di implementazione) 2.4.7-p3

Compatibile con le versioni di Adobe Commerce:

  • Adobe Commerce (tutti i metodi di implementazione) 2.4.6 - 2.4.7-p9
NOTE
La patch potrebbe diventare applicabile ad altre versioni con le nuove versioni di Quality Patches Tool. Per verificare se la patch è compatibile con la versione di Adobe Commerce in uso, aggiornare il pacchetto magento/quality-patches alla versione più recente e verificare la compatibilità nella pagina Quality Patches Tool: Cerca patch. Utilizza l’ID patch come parola chiave di ricerca per individuare la patch.

Problema

La reindicizzazione del prodotto Autorizzazioni catalogo lascia invariate le righe dell’indice delle autorizzazioni esistenti, pertanto le autorizzazioni per le categorie aggiornate non si riflettono correttamente sui prodotti.

Passaggi da riprodurre:

  1. Abilita autorizzazioni categoria:

    1. Accedi all’amministratore.
    2. Vai a Stores > Configuration.
    3. In Catalog, selezionare Catalog.
    4. Espandere Category Permissions.
    5. Imposta Enable su .
    6. Salva la configurazione.
  2. Creazione di 50 o più gruppi di clienti (opzione A o opzione B):

    1. Opzione A — Amministratore: Passare a Customers > Customer Groups e selezionare Add New. Immettere un nome di gruppo, ad esempio ACSD70034_01, e selezionare la classe di imposta predefinita, quindi Save. Ripetere l’operazione per creare 50 o più gruppi.
    2. Opzione B (consigliata) — API REST: Inviare una richiesta POST a /rest/V1/customerGroups con il corpo della richiesta {"group":{"code":"ACSD70034_01","taxClassId":0}}. Ripetere l’operazione per creare 50 gruppi (ACSD70034_01 fino a ACSD70034_50).
  3. Aggiungere le autorizzazioni per le categorie in Amministratore:

    1. Vai a Catalog > Categories.
    2. Modificare 10-20 o più categorie per aumentare la riproducibilità.
    3. In ogni categoria, scorrere fino a Category Permissions e selezionare Add Permission.
    4. Seleziona un sito web (ad esempio Sito web principale) e assegna uno dei gruppi di clienti creati in precedenza.
    5. Configura Grant Catalog Category View, Grant Product Price e Grant Checkout come richiesto.
    6. Selezionare Save.
    7. Scala consigliata: Crea un set di dati più grande (ad esempio, 20 categorie e 20-50 gruppi di clienti) per generare 400-1.000 righe di autorizzazione.
  4. Assicurati che una singola tabella di indice (impostazione predefinita):

    1. Vai a Stores > Configuration > Catalog > Catalog > Category Permissions.
    2. Se viene visualizzato Dimensions o Indexer Dimensions, impostarlo su None (non su Customer Group) per utilizzare una singola tabella indice.
  5. Esegui reindicizzazione con thread paralleli da CLI:

    1. Esporta MAGE_INDEXER_THREADS_COUNT=4.
    2. Esegui php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product.
    3. Esegui php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product.
    4. Ripeti i comandi di reimpostazione e reindicizzazione 5-10 volte per riprodurre il deadlock durante l’esecuzione parallela.

Risultati previsti:

La reindicizzazione viene completata con thread paralleli e le autorizzazioni di categoria aggiornate vengono applicate correttamente ai prodotti nella tabella magento_catalogpermissions_index_product.

Risultati effettivi:

Un errore di deadlock MySQL (1213) si verifica in modo intermittente durante la reindicizzazione e i processi figlio non riescono con errori che fanno riferimento a REPLACE INTO in magento_catalogpermissions_index_replica o magento_catalogpermissions_index_product.

Anche quando la reindicizzazione viene completata senza errori, non aggiorna le righe dell’indice delle autorizzazioni esistenti, pertanto i prodotti continuano a riflettere le autorizzazioni per le categorie non aggiornate.

Applicare la patch

Per applicare singole patch, utilizzare i collegamenti seguenti, a seconda del metodo di distribuzione utilizzato:

Lettura correlata

Per ulteriori informazioni su Quality Patches Tool, vedere:

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