ACP2E-4603 : la réindexation du produit Autorisations de catalogue laisse des lignes d’index d’autorisations obsolètes et un blocage MySQL
Le correctif ACP2E-4603 corrige le problème en raison duquel la réindexation du produit des autorisations de catalogue laisse inchangées les lignes d’index d’autorisations existantes, de sorte que les autorisations de catégorie mises à jour ne sont pas correctement répercutées sur les produits. Ce correctif est disponible lorsque la version 1.1.79 de Quality Patches Tool (QPT) est installée. L’ID du correctif est ACP2E-4603. Notez que ce problème doit être résolu dans Adobe Commerce 2.4.9.
Produits et versions concernés
Le correctif est créé pour la version Adobe Commerce :
- Adobe Commerce (toutes les méthodes de déploiement) 2.4.7-p3
Compatible avec les versions d’Adobe Commerce :
- Adobe Commerce (toutes les méthodes de déploiement) 2.4.6 - 2.4.7-p9
magento/quality-patches vers la dernière version et vérifiez la compatibilité sur la page Quality Patches Tool : Rechercher des correctifs. Utilisez l’ID du correctif comme mot-clé de recherche pour localiser le correctif.Problème
La réindexation des produits des autorisations de catalogue ne modifie pas les lignes d’index d’autorisations existantes. Par conséquent, les autorisations de catégorie mises à jour ne sont pas correctement répercutées sur les produits.
Procédure à suivre :
-
Activer les autorisations de catégorie :
- Connectez-vous à l’administrateur.
- Accédez à Stores > Configuration.
- Sous Catalog, sélectionnez Catalog.
- Développez Category Permissions.
- Définissez Enable sur Oui.
- Enregistrez la configuration.
-
Créez 50 groupes de clients ou plus (option A ou option B) :
- Option A — Administrateur : accédez à Customers > Customer Groups et sélectionnez Add New. Saisissez un nom de groupe (par exemple,
ACSD70034_01) et sélectionnez la classe de taxe par défaut, puis Save. Répétez l’opération pour créer 50 groupes ou plus. - Option B (recommandée) — API REST : envoyez une requête POST à
/rest/V1/customerGroupsavec le corps de la requête{"group":{"code":"ACSD70034_01","taxClassId":0}}. Répétez l’opération pour créer 50 groupes (ACSD70034_01àACSD70034_50).
- Option A — Administrateur : accédez à Customers > Customer Groups et sélectionnez Add New. Saisissez un nom de groupe (par exemple,
-
Ajoutez des autorisations de catégorie dans Admin :
- Accédez à Catalog > Categories.
- Modifiez 10 à 20 catégories ou plus pour augmenter la reproductibilité.
- Dans chaque catégorie, faites défiler l’écran jusqu’à Category Permissions et sélectionnez Add Permission.
- Sélectionnez un site web (par exemple, le site web principal) et attribuez l’un des groupes de clients précédemment créés.
- Configurez Grant Catalog Category View, Grant Product Price et Grant Checkout selon vos besoins.
- Sélectionnez Save.
- Échelle recommandée : créez un jeu de données plus volumineux (par exemple, 20 catégories et 20 à 50 groupes de clients) pour générer 400 à 1 000 lignes d’autorisation.
-
Assurez-vous que la table d’index est unique (par défaut) :
- Accédez à Stores > Configuration > Catalog > Catalog > Category Permissions.
- Si Dimensions ou Indexer Dimensions apparaît, définissez-le sur Aucun (et non Groupe de clients) afin d’utiliser une seule table d’index.
-
Exécutez la réindexation avec des threads parallèles à partir de l’interface de ligne de commande :
MAGE_INDEXER_THREADS_COUNT=4d’exportation.- Exécutez
php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product. - Exécutez
php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product. - Répétez les commandes de réinitialisation et de réindexation 5 à 10 fois pour reproduire l’impasse lors de l’exécution parallèle.
Résultats attendus :
La réindexation s’est terminée avec succès avec des threads parallèles. Les autorisations de catégorie mises à jour sont répercutées correctement sur les produits du tableau magento_catalogpermissions_index_product.
Résultats réels :
Une erreur d’interblocage MySQL (1213) se produit par intermittence pendant la réindexation et les processus enfants échouent avec des erreurs référençant les REPLACE INTO sur magento_catalogpermissions_index_replica ou magento_catalogpermissions_index_product.
Même lorsque la réindexation se termine sans erreur, elle ne met pas à jour les lignes d’index d’autorisation existantes. Les produits continuent donc à refléter les autorisations de catégorie obsolètes.
Application du correctif
Pour appliquer des correctifs individuels, utilisez les liens suivants en fonction de votre méthode de déploiement :
- Adobe Commerce ou Magento Open Source On-premise : Quality Patches Tool > Utilisation dans le guide de Quality Patches Tool.
- Adobe Commerce sur les infrastructures cloud : Mises à niveau et correctifs > Appliquer des correctifs dans le guide Commerce sur les infrastructures cloud .
Lecture connexe
Pour en savoir plus sur Quality Patches Tool, consultez :
- Quality Patches Tool : un outil en libre-service pour les correctifs de qualité dans le guide Outils .