ACSD-53148: Två parallella begäranden i GraphQL om att lägga till samma konfigurerbara produkt
Korrigeringen ACSD-53148 åtgärdar ett problem där två parallella förfrågningar i GraphQL om att lägga till samma konfigurerbara produkt i varukorgen resulterade i två separata artiklar i varukorgen med samma produkt-SKU. Den här korrigeringen är tillgänglig när Quality Patches Tool (QPT) 1.1.37 är installerad. Korrigerings-ID är ACSD-53148. Observera att problemet är planerat att åtgärdas i Adobe Commerce 2.4.7.
Berörda produkter och versioner
Korrigeringen har skapats för Adobe Commerce-version:
- Adobe Commerce (alla distributionsmetoder) 2.4.5-p2
Kompatibel med Adobe Commerce-versioner:
- Adobe Commerce (alla distributionsmetoder) 2.4.4 - 2.4.6-p2
magento/quality-patches
-paketet till den senaste versionen och kontrollerar kompatibiliteten på Quality Patches Tool: Sök efter korrigeringsfiler. Använd patch-ID:t som söknyckelord för att hitta patchen.Problem
Två parallella förfrågningar i GraphQL om att lägga samma konfigurerbara produkt i varukorgen resulterade i två separata artiklar i varukorgen med samma produkt-SKU.
Steg som ska återskapas:
-
Skapa en konfigurerbar produkt med SKU Test och en enkel produkt med SKU Test-A.
-
Skapa en ny tom kundvagn via GraphQL (ändra platsen med din egen URL):
code language-graphql curl --location 'http://mag.local/graphql' \ --header 'Store: default' \ --header 'Content-Type: application/json' \ --data '{"query":"mutation{\n createEmptyCart\n}","variables"{}}'
-
Kör två samtidiga begäranden om att lägga till samma produkt i kundvagnen (ändra cartID och plats för båda förfrågningarna):
code language-graphql curl --location 'http://mag.local/graphql' --header 'Store: default' --header 'Content-Type: application/json' --data '{"query":"mutation($cartId: String!, $preSku: String!, $preParentSku: String!) {\r\n addConfigurableProductsToCart(\r\n input: {\r\n cart_id: $cartId\r\n cart_items: [\r\n {\r\n parent_sku: $preParentSku\r\n data: {\r\n quantity: 1\r\n sku: $preSku\r\n }\r\n }\r\n ]\r\n }\r\n ) {\r\n cart {\r\n items {\r\n id\r\n product {\r\n name\r\n sku\r\n }\r\n quantity\r\n \r\n prices {\r\n price {\r\n value\r\n currency\r\n }\r\n }\r\n ... on ConfigurableCartItem {\r\n configurable_options {\r\n option_label\r\n value_label\r\n }\r\n }\r\n }\r\n total_quantity\r\n prices {\r\n grand_total {\r\n value\r\n currency\r\n }\r\n discounts {\r\n amount {\r\n value\r\n currency\r\n }\r\n label\r\n }\r\n subtotal_excluding_tax {\r\n value\r\n currency\r\n }\r\n } \r\n }\r\n }\r\n}","variables":{"cartId":"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf","preParentSku":"Test","preSku":"Test-A"}}' & curl --location 'http://mag.local/graphql' --header 'Store: default' --header 'Content-Type: application/json' --data '{"query":"mutation($cartId: String!, $preSku: String!, $preParentSku: String!) {\r\n addConfigurableProductsToCart(\r\n input: {\r\n cart_id: $cartId\r\n cart_items: [\r\n {\r\n parent_sku: $preParentSku\r\n data: {\r\n quantity: 1\r\n sku: $preSku\r\n }\r\n }\r\n ]\r\n }\r\n ) {\r\n cart {\r\n items {\r\n id\r\n product {\r\n name\r\n sku\r\n }\r\n quantity\r\n \r\n prices {\r\n price {\r\n value\r\n currency\r\n }\r\n }\r\n ... on ConfigurableCartItem {\r\n configurable_options {\r\n option_label\r\n value_label\r\n }\r\n }\r\n }\r\n total_quantity\r\n prices {\r\n grand_total {\r\n value\r\n currency\r\n }\r\n discounts {\r\n amount {\r\n value\r\n currency\r\n }\r\n label\r\n }\r\n subtotal_excluding_tax {\r\n value\r\n currency\r\n }\r\n } \r\n }\r\n }\r\n}","variables":{"cartId":"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf","preParentSku":"Test","preSku":"Test-A"}}'
-
Hämta vagnen för att se objekten (ändra cartId och plats):
code language-graphql curl --location 'http://mag.local/graphql' \ --header 'Store: default' \ --header 'Content-Type: application/json' \ --data '{"query":"{\n cart(cart_id: \"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf\") {\n items {\n id\n product {\n name\n sku\n }\n quantity\n }\n\n }\n}\n","variables":{}}'
Förväntade resultat:
Objekt listas en gång med qty = 2.
{"data":{"cart":{"items":[{"id":"5","product":{"name":"config1","sku":"config1"},"quantity":2}]}}}%
Faktiska resultat:
Objekt listas två gånger med qty = 1.
{"data":{"cart":{"items":[{"id":"1","product":
{"name":"config1","sku":"config1"},"quantity":1},
{"id":"3","product":{"name":"config1","sku":"config1"},"quantity":1}]}}}%
Tillämpa korrigeringen
Använd följande länkar beroende på distributionsmetod för att tillämpa enskilda korrigeringsfiler:
- Lokal användning för Adobe Commerce eller Magento Open Source: Quality Patches Tool > Användningi guiden Quality Patches Tool.
- Adobe Commerce om molninfrastruktur: Uppgraderingar och korrigeringar > Tillämpa korrigeringar i Commerce om molninfrastruktur.
Relaterad läsning
Mer information om Quality Patches Tool finns i:
- Quality Patches Tool släppt: ett nytt verktyg för självbetjäning av kvalitetspatchar i kunskapsbasen för support.
- Kontrollera om det finns en korrigeringsfil för ditt Adobe Commerce-problem med Quality Patches Tool i guiden Quality Patches Tool.
Mer information om andra tillgängliga korrigeringsfiler i QPT finns i Quality Patches Tool: Söka efter korrigeringsfileri Quality Patches Tool-handboken.