ACSD-48448: Race condition issue during order cancellations causing duplicated entry in inventory_reservation table

The ACSD-48448 patch fixes the issue where the Race condition issue is happening during order cancellations, which causes duplicated entries in the inventory_reservation table. This patch is available when the Quality Patches Tool (QPT) 1.1.34 is installed. The patch ID is ACSD-48448. Please note that the issue is scheduled to be fixed in Adobe Commerce 2.4.7.

Affected products and versions

The patch is created for Adobe Commerce version:

  • Adobe Commerce (all deployment methods) 2.4.2-p2 and 2.4.6

Compatible with Adobe Commerce versions:

  • Adobe Commerce (all deployment methods) 2.4.2 - 2.4.6-p2
NOTE
The patch might become applicable to other versions with new Quality Patches Tool releases. To check if the patch is compatible with your Adobe Commerce version, update the magento/quality-patches package to the latest version and check the compatibility on the Quality Patches Tool: Search for patches page. Use the patch ID as a search keyword to locate the patch.

Issue

Race condition issue is happening during order cancellations, which causes duplicated entries in the inventory_reservation table.

Steps to reproduce:

  1. Place an order.
  2. Check the inventory_reservation table to make sure there is a record for the order_placed event.
  3. Run the attached script to cancel the order in parallel (remember to change the URL and orderID).

bash cancel_order.sh

#!/bin/bash
baseUrl=" "
orderId=3
token=$(curl --location --request POST "${baseUrl}rest/V1/integration/admin/token" \
 -H 'Content-Type: application/json' \
 -d '{
  "username": "admin",
  "password": "password"
}')
echo ${token//\"/}
curl --location --request POST "${baseUrl}/rest/V1/orders/${orderId}/cancel" \
 -H "Authorization:Bearer ${token//\"/}" \
 -H 'Content-Type: application/json' \
 &
sleep 0.1;
curl --location --request POST "${baseUrl}/rest/V1/orders/${orderId}/cancel" \
 -H "Authorization:Bearer ${token//\"/}" \
 -H 'Content-Type: application/json' \
wait

Expected results:

Records are not duplicated.

Actual results:

Duplicate records are created in the inventory_reservation table for order_canceled.

Apply the patch

To apply individual patches, use the following links depending on your deployment method:

For info about other patches available in QPT, refer to Quality Patches Tool: Search for patches in the Quality Patches Tool guide.

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