ACP2E-4603: Katalogberechtigungen - Produktneuindizierung hinterlässt veraltete Berechtigungsindexzeilen und MySQL-Deadlock

Der Patch ACP2E-4603 behebt das Problem, dass bei der Neuindizierung von Katalogberechtigungen vorhandene Berechtigungsindexzeilen unverändert bleiben, sodass aktualisierte Kategorieberechtigungsgewährungen bei Produkten nicht korrekt widergespiegelt werden. Dieser Patch ist verfügbar, wenn Quality Patches Tool (QPT) 1.1.79 installiert ist. Die Patch-ID lautet ACP2E-4603. Dieses Problem wird voraussichtlich in Adobe Commerce 2.4.9 behoben.

Betroffene Produkte und Versionen

Der Patch wird für die Adobe Commerce-Version erstellt:

  • Adobe Commerce (alle Bereitstellungsmethoden) 2.4.7-p3

Kompatibel mit Adobe Commerce-Versionen:

  • Adobe Commerce (alle Bereitstellungsmethoden) 2.4.6 - 2.4.7-p9
NOTE
Der Patch könnte mit neuen Quality Patches Tool-Versionen auch für andere Versionen gelten. Um zu überprüfen, ob der Patch mit Ihrer Adobe Commerce-Version kompatibel ist, aktualisieren Sie das magento/quality-patches auf die neueste Version und überprüfen Sie die Kompatibilität auf der Seite Quality Patches Tool: Nach Patches suchen. Verwenden Sie die Patch-ID als Suchbegriff, um den Patch zu finden.

Problem

Bei der Produktneuindizierung für Katalogberechtigungen bleiben vorhandene Berechtigungsindexzeilen unverändert, sodass aktualisierte Kategorieberechtigungen nicht korrekt auf Produkte angewendet werden.

Schritte zur Reproduktion:

  1. Kategorieberechtigungen aktivieren:

    1. Melden Sie sich beim Administrator an.
    2. Navigieren Sie zu Stores > Configuration.
    3. Wählen Sie unter Catalog die Option Catalog.
    4. Erweitern Sie Category Permissions.
    5. Setzen Sie Enable auf Ja.
    6. Speichern Sie die Konfiguration.
  2. Erstellen von mindestens 50 Kundengruppen (Option A oder Option B):

    1. Option A — Admin: Gehen Sie zu Customers > Customer Groups und wählen Sie Add New aus. Geben Sie einen Gruppennamen ein (z. B. ACSD70034_01) und wählen Sie die Standardsteuerklasse und dann Save. Wiederholen Sie den Vorgang, um mindestens 50 Gruppen zu erstellen.
    2. Option B (empfohlen) — REST-API: Senden Sie eine POST-Anfrage an /rest/V1/customerGroups mit dem {"group":{"code":"ACSD70034_01","taxClassId":0}} Anfragetext. Wiederholen Sie diesen Vorgang, um 50 Gruppen zu erstellen (ACSD70034_01 bis ACSD70034_50).
  3. Kategorieberechtigungen in Admin hinzufügen:

    1. Navigieren Sie zu Catalog > Categories.
    2. Bearbeiten Sie 10-20 oder mehr Kategorien, um die Reproduzierbarkeit zu erhöhen.
    3. Scrollen Sie in jeder Kategorie zu Category Permissions und wählen Sie Add Permission aus.
    4. Wählen Sie eine Website aus (z. B. die Haupt-Website) und weisen Sie eine der zuvor erstellten Kundengruppen zu.
    5. Konfigurieren Sie Grant Catalog Category View, Grant Product Price und Grant Checkout nach Bedarf.
    6. Wählen Sie Save aus.
    7. Empfohlener Maßstab Erstellen Sie einen größeren Datensatz (z. B. 20 Kategorien und 20-50 Kundengruppen), um 400-1.000 Berechtigungszeilen zu generieren.
  4. Stellen Sie eine einzelne Indextabelle sicher (Standard):

    1. Navigieren Sie zu Stores > Configuration > Catalog > Catalog > Category Permissions.
    2. Wenn Dimensions oder Indexer Dimensions angezeigt wird, setzen Sie sie Keine (nicht Kundengruppe), um eine einzelne Indextabelle zu verwenden.
  5. Führen Sie über die CLI eine Neuindizierung mit parallelen Threads aus:

    1. MAGE_INDEXER_THREADS_COUNT=4 exportieren.
    2. php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product ausführen.
    3. php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product ausführen.
    4. Wiederholen Sie die Befehle zum Zurücksetzen und Neuindizieren 5 bis 10 Mal, um den Deadlock während der parallelen Ausführung zu reproduzieren.

Erwartete Ergebnisse:

Die Neuindizierung wird mit parallelen Threads erfolgreich abgeschlossen, und die gewährten aktualisierten Kategorieberechtigungen werden für Produkte in der magento_catalogpermissions_index_product korrekt angezeigt.

Tatsächliche Ergebnisse:

Während der Neuindizierung tritt zeitweise ein MySQL-Deadlock-Fehler (1213) auf, und untergeordnete Prozesse schlagen fehl, wobei auf REPLACE INTO in magento_catalogpermissions_index_replica oder magento_catalogpermissions_index_product verwiesen wird.

Selbst wenn die Neuindizierung fehlerfrei abgeschlossen wird, werden die vorhandenen Berechtigungsindexzeilen nicht aktualisiert, sodass Produkte weiterhin veraltete Kategorieberechtigungen widerspiegeln.

Patch anwenden

Verwenden Sie je nach Bereitstellungsmethode die folgenden Links, um einzelne Patches anzuwenden:

Verwandtes Lesen

Weitere Informationen zu Quality Patches Tool finden Sie unter:

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