ACP2E-4603: カタログ権限の製品インデックスの再インデックスは、古い権限インデックス行とMySQLのデッドロックを残します
ACP2E-4603 パッチでは、カタログ権限の製品インデックス再作成で既存の権限インデックス行が変更されないため、更新されたカテゴリ権限の付与が製品に正しく反映されない問題が修正されました。 このパッチは、Quality Patches Tool (QPT) 1.1.79がインストールされている場合に利用できます。 パッチ IDはACP2E-4603です。 この問題は、Adobe Commerce 2.4.9で修正される予定です。
影響を受ける製品とバージョン
パッチはAdobe Commerceのバージョン用に作成されました
- Adobe Commerce(すべてのデプロイメント方法) 2.4.7-p3
Adobe Commerceのバージョンとの互換性:
- Adobe Commerce(すべてのデプロイメント方法) 2.4.6 - 2.4.7-p9
magento/quality-patches パッケージを最新バージョンに更新し、Quality Patches Tool:パッチの検索ページ で互換性を確認します。 パッチ IDを検索キーワードとして使用して、パッチを検索します。イシュー
カタログ権限の製品インデックス再作成では、既存の権限インデックス行は変更されないため、更新されたカテゴリ権限の付与が製品に正しく反映されません。
複製する手順:
-
カテゴリ権限を有効にする:
- Adminにログインします。
- Stores > Configurationに移動します。
- Catalogで、Catalogを選択します。
- Category Permissionsを展開します。
- Enableを はい に設定します。
- 設定を保存します。
-
50以上の顧客グループを作成します(オプション Aまたはオプション B)。
- オプション A – 管理者: Customers > Customer Groupsに移動し、Add Newを選択します。 グループ名(例:
ACSD70034_01)を入力し、デフォルトの税区分を選択してから Save を選択します。 これを繰り返して50以上のグループを作成します。 - オプション B (推奨) — REST API: リクエスト本文
{"group":{"code":"ACSD70034_01","taxClassId":0}}を使用して/rest/V1/customerGroupsにPOST リクエストを送信します。 この手順を繰り返して、50 グループ (ACSD70034_01~ACSD70034_50)を作成します。
- オプション A – 管理者: Customers > Customer Groupsに移動し、Add Newを選択します。 グループ名(例:
-
管理者にカテゴリの権限を追加:
- Catalog > Categoriesに移動します。
- 再現性を高めるために、10~20種類以上のカテゴリを編集します。
- 各カテゴリで、Category Permissionsまでスクロールし、Add Permissionを選択します。
- Web サイト(メイン Web サイトなど)を選択し、以前に作成した顧客グループのいずれかを割り当てます。
- 必要に応じてGrant Catalog Category View、Grant Product Price、Grant Checkoutを設定します。
- Saveを選択します。
- 推奨されるスケール:大きなデータセット(例:20個のカテゴリと20~50個の顧客グループ)を作成して、400~1,000個の権限行を生成します。
-
1つのインデックステーブルを確保します(デフォルト)。
- Stores > Configuration > Catalog > Catalog > Category Permissionsに移動します。
- Dimensionsまたは Indexer Dimensions が表示される場合は、1つのインデックステーブルを使用するように、なし (顧客グループ)に設定します。
-
CLIからパラレルスレッドで再インデックスを実行します。
MAGE_INDEXER_THREADS_COUNT=4をエクスポートします。php bin/magento indexer:reset catalogpermissions_category catalogpermissions_productを実行します。php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_productを実行します。- reset and reindex コマンドを5~10回繰り返して、並列実行時にデッドロックを再現します。
期待される結果:
再インデックスは並行スレッドで正常に完了し、更新されたカテゴリ権限の付与は、magento_catalogpermissions_index_product テーブルの製品に正しく反映されます。
実際の結果:
MySQL デッドロックエラー(1213)がインデックス再作成中に断続的に発生し、子プロセスがmagento_catalogpermissions_index_replicaまたはmagento_catalogpermissions_index_productでREPLACE INTOを参照するエラーで失敗します。
インデックス再作成がエラーなしで完了しても、既存の権限インデックス行は更新されないので、製品は古いカテゴリ権限の付与を反映し続けます。
パッチを適用する
個別のパッチを適用するには、デプロイメント方法に応じて次のリンクを使用します。
- Adobe CommerceまたはMagento Open Source オンプレミス:Quality Patches Tool ガイドのQuality Patches Tool >使用状況。
- クラウドインフラストラクチャ上のAdobe Commerce:「 アップグレードとパッチ > パッチを適用」(Commerce クラウドインフラストラクチャガイド)。
関連トピックス
Quality Patches Toolについて詳しくは、次を参照してください。
- Quality Patches Tool: ツール ガイドの品質パッチ のセルフサービス ツール。