ACSD-53148: Twee parallelle verzoeken in GraphQL om hetzelfde configureerbare product toe te voegen

De ACSD-53148-patch verhelpt het probleem dat twee parallelle aanvragen in GraphQL voor het toevoegen van hetzelfde configureerbare product aan het winkelwagentje resulteerden in twee afzonderlijke items op het winkelwagentje met hetzelfde product-SKU. Deze patch is beschikbaar wanneer Quality Patches Tool (QPT) 1.1.37 wordt geïnstalleerd. De patch-id is ACSD-53148. Het probleem wordt volgens de planning opgelost in Adobe Commerce 2.4.7.

Betrokken producten en versies

het flard wordt gecreeerd voor de versie van Adobe Commerce:

  • Adobe Commerce (alle implementatiemethoden) 2.4.5-p2

Compatibel met de versies van Adobe Commerce:

  • Adobe Commerce (alle implementatiemethoden) 2.4.4 - 2.4.6-p2
NOTE
De patch kan van toepassing worden op andere versies met nieuwe Quality Patches Tool versies. Om te controleren of de patch compatibel is met uw Adobe Commerce-versie, werkt u het 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

Twee parallelle verzoeken in GraphQL om hetzelfde configureerbare product aan het winkelwagentje toe te voegen, resulteerden in twee afzonderlijke artikelen op het winkelwagentje met hetzelfde product-SKU.

Stappen om te reproduceren:

  1. Creeer een configureerbaar product met SKU Test en een eenvoudig product met SKU test-A.

  2. Maak een nieuw leeg winkelwagentje via GraphQL (wijzig de locatie met uw eigen 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"{}}'
    
  3. Looppas twee gezamenlijke verzoeken om het zelfde product aan de kar (verandering cartID en plaats voor beide verzoeken) toe te voegen:

    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"}}'
    
  4. Krijg de wagentje om de punten (verandering cartId en plaats) te zien:

    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":{}}'
    

Verwachte resultaten :

Item eenmaal vermeld met qty = 2.

    {"data":{"cart":{"items":[{"id":"5","product":{"name":"config1","sku":"config1"},"quantity":2}]}}}%

Ware resultaten :

Item tweemaal vermeld met qty = 1.

    {"data":{"cart":{"items":[{"id":"1","product":
    {"name":"config1","sku":"config1"},"quantity":1},
    {"id":"3","product":{"name":"config1","sku":"config1"},"quantity":1}]}}}%

De patch toepassen

Om individuele flarden toe te passen, gebruik de volgende verbindingen afhankelijk van uw plaatsingsmethode:

Gerelateerde lezing

Meer informatie over Quality Patches Tool vindt u in:

Voor informatie over andere flarden beschikbaar in QPT, verwijs naar Quality Patches Tool: Onderzoek naar flardenin de Quality Patches Tool gids.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a