ACSD-67166: dubbele uitvoering van de cataloginventory_stock_status -query bij het laden van een aanhalingsteken in de winkel
De ACSD-67166-patch verhelpt het probleem waarbij dubbele uitvoering van de cataloginventory_stock_status -query plaatsvindt wanneer een aanhalingsteken in de winkel wordt geladen, wat leidt tot redundante DB-aanroepen. Deze patch is beschikbaar wanneer Quality Patches Tool (QPT) 1.1.70 wordt geïnstalleerd. De patch-id is ACSD-67166. Dit probleem wordt volgens de planning opgelost in Adobe Commerce 2.4.9.
Betrokken producten en versies
het flard wordt gecreeerd voor de versie van Adobe Commerce:
- Adobe Commerce (alle implementatiemethoden) 2.4.5-p13
Compatibel met de versies van Adobe Commerce:
- Adobe Commerce (alle implementatiemethoden) 2.4.4 - 2.4.8-p2
magento/quality-patches -pakket bij naar de meest recente versie en controleert u de compatibiliteit op de Quality Patches Tool : zoek naar patches op de pagina . Gebruik de patch-id als een zoekwoord om de patch te zoeken.Probleem
De dubbele uitvoering van de vraag cataloginventory_stock_status komt voor wanneer het laden van een citaat op de storefront, veroorzakend overtollige vraag van DB.
Stappen om te reproduceren:
-
Installeer een schone instantie.
-
Maak een Category en een Simple Product .
-
Ga naar de categorie en voeg een product aan de kar toe.
-
Ga naar de winkelwagentje pagina:
/checkout/cart/ -
Onderbrekingspunten instellen in xDebug :
app/code/Magento/CatalogInventory/Model/StockRegistryPreloader.php:115app/code/Magento/InventoryCatalog/Model/LegacyStockStatusCache.php:73lib/internal/Magento/Framework/Data/AbstractSearchResult.php:233- Voorwaarde van het onderbrekingspunt:
strpos($this->query->getSelectSql(true), 'stock_status') !==false
Voeg$_SERVER['REQUEST_URI']aan horloges in PHPStorm toe om te verifiëren de vraag tweemaal binnen het zelfde verzoek wordt geroepen.
Verwachte resultaten :
De query wordt één keer per aanvraag uitgevoerd.
Ware resultaten :
Dezelfde query wordt tweemaal uitgevoerd:
SELECT `main_table`.*, `cp_table`.`sku`, `cp_table`.`type_id` FROM `cataloginventory_stock_status` AS `main_table`
INNER JOIN `catalog_product_entity` AS `cp_table` ON main_table.product_id = cp_table.entity_id AND (cp_table.created_in <= 1 AND cp_table.updated_in > 1) WHERE (`main_table`.`product_id` IN(2)) AND (`main_table`.`website_id` = '0')
De patch toepassen
Om individuele flarden toe te passen, gebruik de volgende verbindingen afhankelijk van uw plaatsingsmethode:
- Op locatie Adobe Commerce of Magento Open Source: Quality Patches Tool > Gebruik in de handleiding Quality Patches Tool
- Adobe Commerce op wolkeninfrastructuur: Verbeteringen en Patches > Patches toepassen in Commerce op de gids van de Infrastructuur van de Wolk
Gerelateerde lezing
Meer informatie over Quality Patches Tool vindt u in:
- Quality Patches Tool: Een zelfbedieningshulpmiddel voor kwaliteitspatches in de gids van Hulpmiddelen