[Solo PaaS]{class="badge informative" title="Applicabile solo ai progetti Adobe Commerce on Cloud (infrastruttura PaaS gestita da Adobe) e ai progetti on-premise."}

ACSD-67166: esecuzione duplicata della query cataloginventory_stock_status durante il caricamento di un preventivo nella vetrina

La patch ACSD-67166 risolve il problema relativo all'esecuzione duplicata della query cataloginventory_stock_status durante il caricamento di un preventivo nella vetrina, causando chiamate ridondanti al database. Questa patch è disponibile quando è installato Quality Patches Tool (QPT) 1.1.70. L’ID della patch è ACSD-67166. Questo problema è pianificato per la risoluzione in Adobe Commerce 2.4.9.

Prodotti e versioni interessati

La patch è stata creata per la versione di Adobe Commerce:

  • Adobe Commerce (tutti i metodi di implementazione) 2.4.5-p13

Compatibile con le versioni di Adobe Commerce:

  • Adobe Commerce (tutti i metodi di implementazione) 2.4.4 - 2.4.8-p2
NOTE
La patch potrebbe diventare applicabile ad altre versioni con le nuove versioni di Quality Patches Tool. Per verificare se la patch è compatibile con la versione di Adobe Commerce in uso, aggiornare il pacchetto magento/quality-patches alla versione più recente e verificare la compatibilità nella pagina Quality Patches Tool: Cerca patch. Utilizza l’ID patch come parola chiave di ricerca per individuare la patch.

Problema

L'esecuzione duplicata della query cataloginventory_stock_status si verifica quando si caricano virgolette nella vetrina, causando chiamate ridondanti al database.

Passaggi da riprodurre:

  1. Installa un’istanza pulita.

  2. Creare Category e Simple Product.

  3. Vai alla categoria e aggiungi un prodotto al carrello.

  4. Vai alla pagina del carrello: /checkout/cart/

  5. Imposta punti di interruzione in xDebug:

    1. app/code/Magento/CatalogInventory/Model/StockRegistryPreloader.php:115
    2. app/code/Magento/InventoryCatalog/Model/LegacyStockStatusCache.php:73
    3. lib/internal/Magento/Framework/Data/AbstractSearchResult.php:233
    4. Condizione punto di interruzione: strpos($this->query->getSelectSql(true), 'stock_status') !==false
      Aggiungi $_SERVER['REQUEST_URI'] a orologi in PHPStorm per verificare che la query venga chiamata due volte all'interno della stessa richiesta.

Risultati previsti:

La query viene eseguita una volta per richiesta.

Risultati effettivi:

La stessa query viene eseguita due volte:

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')

Applicare la patch

Per applicare singole patch, utilizzare i collegamenti seguenti, a seconda del metodo di distribuzione utilizzato:

Lettura correlata

Per ulteriori informazioni su Quality Patches Tool, vedere:

recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3