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
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:
-
Abilita autorizzazioni categoria:
- Accedi all’amministratore.
- Vai a Stores > Configuration.
- In Catalog, selezionare Catalog.
- Espandere Category Permissions.
- Imposta Enable su Sì.
- Salva la configurazione.
-
Creazione di 50 o più gruppi di clienti (opzione A o opzione B):
- 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. - Opzione B (consigliata) — API REST: Inviare una richiesta POST a
/rest/V1/customerGroupscon il corpo della richiesta{"group":{"code":"ACSD70034_01","taxClassId":0}}. Ripetere l’operazione per creare 50 gruppi (ACSD70034_01fino aACSD70034_50).
- Opzione A — Amministratore: Passare a Customers > Customer Groups e selezionare Add New. Immettere un nome di gruppo, ad esempio
-
Aggiungere le autorizzazioni per le categorie in Amministratore:
- Vai a Catalog > Categories.
- Modificare 10-20 o più categorie per aumentare la riproducibilità.
- In ogni categoria, scorrere fino a Category Permissions e selezionare Add Permission.
- Seleziona un sito web (ad esempio Sito web principale) e assegna uno dei gruppi di clienti creati in precedenza.
- Configura Grant Catalog Category View, Grant Product Price e Grant Checkout come richiesto.
- Selezionare Save.
- 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.
-
Assicurati che una singola tabella di indice (impostazione predefinita):
- Vai a Stores > Configuration > Catalog > Catalog > Category Permissions.
- Se viene visualizzato Dimensions o Indexer Dimensions, impostarlo su None (non su Customer Group) per utilizzare una singola tabella indice.
-
Esegui reindicizzazione con thread paralleli da CLI:
- Esporta
MAGE_INDEXER_THREADS_COUNT=4. - Esegui
php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product. - Esegui
php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product. - Ripeti i comandi di reimpostazione e reindicizzazione 5-10 volte per riprodurre il deadlock durante l’esecuzione parallela.
- Esporta
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:
- Adobe Commerce o Magento Open Source on-premise: Quality Patches Tool > Utilizzo nella guida di Quality Patches Tool.
- Adobe Commerce su infrastruttura cloud: Aggiornamenti e patch > Applica patch nella guida Commerce su infrastruttura cloud.
Lettura correlata
Per ulteriori informazioni su Quality Patches Tool, vedere:
- Quality Patches Tool: strumento self-service per patch di qualità nella guida degli strumenti.