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
NOTE
该修补程序可能适用于具有新Quality Patches Tool发行版本的其他版本。 要检查修补程序是否与您的Adobe Commerce版本兼容,请将
magento/quality-patches包更新到最新版本,并在Quality Patches Tool:搜索修补程序页面上检查兼容性。 使用修补程序ID作为搜索关键字来查找修补程序。问题
目录权限产品重新索引使现有权限索引行保持不变,因此更新的类别权限授权无法在产品上正确反映。
重现步骤:
-
启用类别权限:
- 登录到管理员。
- 转到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。
- 选择一个网站(例如,主网站),然后分配一个之前创建的客户组。
- 根据需要配置Grant Catalog Category View、Grant Product Price和Grant Checkout。
- 选择Save。
- 建议的范围:创建更大的数据集(例如,20个类别和20-50个客户组)以生成400-1,000个权限行。
-
确保单个索引表(默认):
- 转到Stores > Configuration > Catalog > Catalog > Category Permissions。
- 如果出现 Dimensions 或Indexer Dimensions,请将其设置为无 (不是客户组)以使用单个索引表。
-
使用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和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的更多信息,请参阅:
recommendation-more-help
commerce-operations-help-tools