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
NOTE
Le correctif peut s’appliquer à d’autres versions avec de nouvelles versions de Quality Patches Tool. Pour vérifier si le correctif est compatible avec votre version d’Adobe Commerce, mettez à jour le package 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 :

  1. Activer les autorisations de catégorie :

    1. Connectez-vous à l’administrateur.
    2. Accédez à Stores > Configuration.
    3. Sous Catalog, sélectionnez Catalog.
    4. Développez Category Permissions.
    5. Définissez Enable sur Oui.
    6. Enregistrez la configuration.
  2. Créez 50 groupes de clients ou plus (option A ou option B) :

    1. 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.
    2. Option B (recommandée) — API REST : envoyez une requête POST à /rest/V1/customerGroups avec 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).
  3. Ajoutez des autorisations de catégorie dans Admin :

    1. Accédez à Catalog > Categories.
    2. Modifiez 10 à 20 catégories ou plus pour augmenter la reproductibilité.
    3. Dans chaque catégorie, faites défiler l’écran jusqu’à Category Permissions et sélectionnez Add Permission.
    4. Sélectionnez un site web (par exemple, le site web principal) et attribuez l’un des groupes de clients précédemment créés.
    5. Configurez Grant Catalog Category View, Grant Product Price et Grant Checkout selon vos besoins.
    6. Sélectionnez Save.
    7. É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.
  4. Assurez-vous que la table d’index est unique (par défaut) :

    1. Accédez à Stores > Configuration > Catalog > Catalog > Category Permissions.
    2. 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.
  5. Exécutez la réindexation avec des threads parallèles à partir de l’interface de ligne de commande :

    1. MAGE_INDEXER_THREADS_COUNT=4 d’exportation.
    2. Exécutez php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product.
    3. Exécutez php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product.
    4. 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 :

Lecture connexe

Pour en savoir plus sur Quality Patches Tool, consultez :

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