ACSD-48448:注文 Race キャンセル中に、テーブル内のエントリが重複する原因となる条件 inventory_reservation 問題

ACSD-48448 パッチは、注文のキャンセル中に Race 条件の問題が発生し、inventory_reservation テーブルのエントリが重複する問題を修正します。 このパッチは、Quality Patches Tool (QPT) 1.1.34 がインストールされている場合に使用できます。 パッチ ID は ACSD-48448 です。 この問題はAdobe Commerce 2.4.7 で修正される予定であることに注意してください。

影響を受ける製品とバージョン

Adobe Commerce バージョン用のパッチが作成されます。

  • Adobe Commerce(すべてのデプロイメント方法) 2.4.2-p2 および 2.4.6

Adobe Commerce バージョンとの互換性:

  • Adobe Commerce(すべてのデプロイメント方法) 2.4.2 ~ 2.4.6-p2
NOTE
このパッチは、新しい Quality Patches Tool リリースを含む他のバージョンにも適用される可能性があります。 パッチがAdobe Commerceのバージョンと互換性があるかどうかを確認するには、magento/quality-patches パッケージを最新バージョンに更新し、Quality Patches Tool: Search for patches page で互換性を確認します。 パッチ ID を検索キーワードとして使用して、パッチを見つけます。

問題

注文 Race キャンセル中に条件の問題が発生し、inventory_reservation テーブルのエントリが重複します。

再現手順 :

  1. 注文します。
  2. inventory_reservation テーブルを調べて、order_placed イベントのレコードがあることを確認します。
  3. 添付のスクリプトを実行して、注文を並行してキャンセルします(URL と 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

期待される結果 :

レコードは複製されません。

実際の結果 :

order_canceled 用に、重複するレコードが inventory_reservation テーブルに作成されます。

パッチの適用

個々のパッチを適用するには、デプロイメント方法に応じて、次のリンクを使用します。

関連資料

QPT で使用可能なその他のパッチの詳細については、Quality Patches Tool ガイドの「Quality Patches Tool: Search for patches」を参照してください。

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