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作为搜索关键字来查找修补程序。

问题

目录权限产品重新索引使现有权限索引行保持不变,因此更新的类别权限授权无法在产品上正确反映。

重现步骤

  1. 启用类别权限:

    1. 登录到管理员。
    2. 转到​Stores > Configuration
    3. 在​ Catalog ​下,选择​Catalog
    4. 展开​Category Permissions
    5. 将​ Enable ​设置为​
    6. 保存配置。
  2. 创建50个或更多客户组(选项A或选项B):

    1. 选项A — 管理员:​转到​Customers > Customer Groups​并选择​Add New。 输入组名(例如,ACSD70034_01)并选择默认税分类,然后选择​Save。 重复创建50个或更多组。
    2. 选项B(推荐) — REST API:​使用请求正文{"group":{"code":"ACSD70034_01","taxClassId":0}}/rest/V1/customerGroups发送POST请求。 重复创建50个组(ACSD70034_01ACSD70034_50)。
  3. 在管理员中添加类别权限:

    1. 转到​Catalog > Categories
    2. 编辑10-20个或更多类别以提高可重复性。
    3. 在每个类别中,滚动到​ Category Permissions ​并选择​Add Permission
    4. 选择一个网站(例如,主网站),然后分配一个之前创建的客户组。
    5. 根据需要配置​Grant Catalog Category ViewGrant Product Price​和​Grant Checkout
    6. 选择​Save
    7. 建议的范围:​创建更大的数据集(例如,20个类别和20-50个客户组)以生成400-1,000个权限行。
  4. 确保单个索引表(默认):

    1. 转到​Stores > Configuration > Catalog > Catalog > Category Permissions
    2. 如果出现​ Dimensions ​或​Indexer Dimensions,请将其设置为​ (不是​客户组)以使用单个索引表。
  5. 使用CLI中的并行线程运行重新索引:

    1. 导出MAGE_INDEXER_THREADS_COUNT=4
    2. 运行php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product
    3. 运行php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product
    4. 在并行执行期间重复reset和reindex命令5-10次以重现死锁。

预期的结果

使用并行线程重新索引成功完成,更新后的类别权限授权正确反映在magento_catalogpermissions_index_product表中的产品上。

实际结果

重新索引期间间歇性地发生MySQL死锁错误(1213),子进程失败,错误引用magento_catalogpermissions_index_replicamagento_catalogpermissions_index_product上的REPLACE INTO

即使重新索引完成且没有错误,它也不会更新现有的权限索引行,因此产品会继续反映过时的类别权限授权。

应用修补程序

要应用单独的修补程序,请根据您的部署方法使用以下链接:

相关阅读

要了解有关Quality Patches Tool的更多信息,请参阅:

recommendation-more-help
commerce-operations-help-tools