ACSD-67166: Duplicar la ejecución de la consulta cataloginventory_stock_status al cargar un presupuesto en la tienda
La revisión ACSD-67166 corrige el problema en el que la ejecución duplicada de la consulta cataloginventory_stock_status se produce al cargar una cotización en la tienda, lo que provoca llamadas de BD redundantes. Esta revisión está disponible cuando está instalado Quality Patches Tool (QPT) 1.1.70. El ID del parche es ACSD-67166. Este problema está programado para solucionarse en Adobe Commerce 2.4.9.
Productos y versiones afectados
El parche se ha creado para la versión de Adobe Commerce:
- Adobe Commerce (todos los métodos de implementación) 2.4.5-p13
Compatible con versiones de Adobe Commerce:
- Adobe Commerce (todos los métodos de implementación) 2.4.4 - 2.4.8-p2
magento/quality-patches a la última versión y compruebe la compatibilidad en la página Quality Patches Tool: buscar parches . Utilice el ID de parche como palabra clave de búsqueda para localizar el parche.Problema
La ejecución duplicada de la consulta cataloginventory_stock_status se produce al cargar un presupuesto en la tienda, lo que provoca llamadas de BD redundantes.
Pasos a seguir:
-
Instale una instancia limpia.
-
Crear un Category y un Simple Product.
-
Vaya a la categoría y añada un producto al carro de compras.
-
Ir a la página del carro:
/checkout/cart/ -
Establecer puntos de interrupción en xDebug:
app/code/Magento/CatalogInventory/Model/StockRegistryPreloader.php:115app/code/Magento/InventoryCatalog/Model/LegacyStockStatusCache.php:73lib/internal/Magento/Framework/Data/AbstractSearchResult.php:233- Condición de punto de interrupción:
strpos($this->query->getSelectSql(true), 'stock_status') !==false
Agregue$_SERVER['REQUEST_URI']a relojes en PHPStorm para verificar que se llame dos veces a la consulta dentro de la misma solicitud.
Resultados esperados:
La consulta se ejecuta una vez por solicitud.
Resultados reales:
La misma consulta se ejecuta dos veces:
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')
Aplicar el parche
Para aplicar parches individuales, utilice los siguientes vínculos según el método de implementación:
- Adobe Commerce o Magento Open Source local: Quality Patches Tool > Uso en la guía Quality Patches Tool
- Adobe Commerce en la infraestructura de la nube: Actualizaciones y parches > Aplicar parches en la guía Commerce en la infraestructura de la nube
Lectura relacionada
Para obtener más información sobre Quality Patches Tool, consulte:
- Quality Patches Tool: herramienta de autoservicio para parches de calidad en la guía Herramientas