[僅限PaaS]{class="badge informative" title="僅適用於雲端專案(Adobe管理的PaaS基礎結構)和內部部署專案的Adobe Commerce 。"}
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上檢查相容性:搜尋修補程式頁面。 使用修補程式ID作為搜尋關鍵字,以尋找修補程式。問題
取消訂單期間發生 Race 狀況問題,導致inventory_reservation資料表中出現重複專案。
要再現的步驟:
- 下訂單。
- 檢查
inventory_reservation資料表以確定有order_placed事件的記錄。 - 執行附加的指令碼以同時取消順序(請記得變更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
預期結果:
記錄不會重複。
實際結果:
在inventory_reservation表格中為order_canceled建立了重複的記錄。
套用修補程式
若要套用個別修補程式,請根據您的部署方法使用下列連結:
- Adobe Commerce或Magento Open Source內部部署: Quality Patches Tool 指南中的>使用狀況Quality Patches Tool
- 雲端基礎結構上的Adobe Commerce:雲端基礎結構上的Commerce指南中的升級和修補程式>套用修補程式
相關閱讀
- Quality Patches Tool 已發行:支援知識庫中的自助式品質修補程式的新工具
- 使用 Quality Patches Tool指南中的Quality Patches Tool,檢查您的Adobe Commerce問題是否有修補程式可用
- 在Commerce實作行動手冊中修改資料庫表格的最佳實務
如需QPT中其他修補程式的詳細資訊,請參閱Quality Patches Tool指南中的:搜尋修補程式Quality Patches Tool。
recommendation-more-help
c2d96e17-5179-455c-ad3a-e1697bb4e8c3