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
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:
-
Kategorieberechtigungen aktivieren:
- Melden Sie sich beim Administrator an.
- Navigieren Sie zu Stores > Configuration.
- Wählen Sie unter Catalog die Option Catalog.
- Erweitern Sie Category Permissions.
- Setzen Sie Enable auf Ja.
- Speichern Sie die Konfiguration.
-
Erstellen von mindestens 50 Kundengruppen (Option A oder Option B):
- 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. - Option B (empfohlen) — REST-API: Senden Sie eine POST-Anfrage an
/rest/V1/customerGroupsmit dem{"group":{"code":"ACSD70034_01","taxClassId":0}}Anfragetext. Wiederholen Sie diesen Vorgang, um 50 Gruppen zu erstellen (ACSD70034_01bisACSD70034_50).
- Option A — Admin: Gehen Sie zu Customers > Customer Groups und wählen Sie Add New aus. Geben Sie einen Gruppennamen ein (z. B.
-
Kategorieberechtigungen in Admin hinzufügen:
- Navigieren Sie zu Catalog > Categories.
- Bearbeiten Sie 10-20 oder mehr Kategorien, um die Reproduzierbarkeit zu erhöhen.
- Scrollen Sie in jeder Kategorie zu Category Permissions und wählen Sie Add Permission aus.
- Wählen Sie eine Website aus (z. B. die Haupt-Website) und weisen Sie eine der zuvor erstellten Kundengruppen zu.
- Konfigurieren Sie Grant Catalog Category View, Grant Product Price und Grant Checkout nach Bedarf.
- Wählen Sie Save aus.
- Empfohlener Maßstab Erstellen Sie einen größeren Datensatz (z. B. 20 Kategorien und 20-50 Kundengruppen), um 400-1.000 Berechtigungszeilen zu generieren.
-
Stellen Sie eine einzelne Indextabelle sicher (Standard):
- Navigieren Sie zu Stores > Configuration > Catalog > Catalog > Category Permissions.
- Wenn Dimensions oder Indexer Dimensions angezeigt wird, setzen Sie sie Keine (nicht Kundengruppe), um eine einzelne Indextabelle zu verwenden.
-
Führen Sie über die CLI eine Neuindizierung mit parallelen Threads aus:
MAGE_INDEXER_THREADS_COUNT=4exportieren.php bin/magento indexer:reset catalogpermissions_category catalogpermissions_productausführen.php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_productausführen.- 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:
- Adobe Commerce oder Magento Open Source On-Premise: Quality Patches Tool > Nutzung im Quality Patches Tool.
- Adobe Commerce in Cloud-Infrastruktur: Upgrades und Patches > Patches anwenden im Handbuch zu Commerce in Cloud-Infrastruktur.
Verwandtes Lesen
Weitere Informationen zu Quality Patches Tool finden Sie unter:
- Quality Patches Tool: Ein Self-Service-Tool für hochwertige Patches im Tools-Handbuch.