在CMS座舱中的多线程页面同步期间创建的重复CMS组件

2020-09-04 23:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我正在运行Hybri...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我正在运行Hybris 5.6.0.2。

我遇到了多线程目录同步创建重复项的问题:直接运行cron作业还是通过CMS座舱目录同步运行。 我知道如何查找重复的标识符并自己删除它们,但这对于使用CMS座舱的CMS用户而言,这成为繁琐的任务。 如果我将cron作业配置为仅使用一个线程,则不会发生此问题。

通过执行以下操作,我可以始终如一地重现该问题:

  • 在CMS座舱中,使用源内容目录中的模板创建新的内容页面

  • 覆盖模板中的内容插槽之一

  • 创建一个新的CMS段落组件并将其添加到内容栏

  • 通过页面顶部的按钮同步页面

我发现,多线程同步过程将获取ContentPage,ContentSlot,CMSParagraphComponent和ContentSlotForPage,并尝试同时同步它们。 我假设通过解决子引用的问题,这些工作人员最终会发生冲突,并且对于谁可以首先同步组件和内容插槽具有竞争条件。 大多数情况下,我都会得到两个重复:内容栏和cms段落部分。

多线程同步作业是否缺少某些配置? 我没有从OOTB混合设置更改CMSSynchronizationService中relatedReferencesTypesMap的配置。 日志如下。 再一次,只有在尝试与多个线程同步并且将作业配置为仅使用一个线程运行时,这种情况才会发生,这将使此问题消失,但这似乎浪费了计算资源。

感谢所有帮助!

  16:03:07,561 [DEBUG] [SyncWorker <00000NXB 6 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 6 of 8>已启动
  16:03:07,561 [DEBUG] [SyncWorker <00000NXB 5 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 5 of 8>已启动
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 4 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 4 of 8>已启动
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 2 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 2 of 8>已启动
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 6 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 6 of 8>获取<8796420867120-> null []>(ContentPage)
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 3 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 3 of 8>已启动
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 7 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 7 of 8>已启动
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 8 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 8 of 8>已启动
  16:03:07,563 [DEBUG] [SyncWorker <00000NXB 1 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 1 of 8>已启动
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 5 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 5 of 8>获取<8796421030954-> null []>(ContentSlot)
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 2 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 2 of 8>获取<8796388230204-> null []>(段落组件)
  16:03:07,565 [DEBUG] [SyncWorker <00000NXB 4 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 4 of 8>获取了<8796420932655-> null []>(页面的内容槽)
  16:03:07,668 [ERROR] [SyncWorker <00000NXB 2 of 8>](00000NXB)[AbstractItemCopyContext]为8796388230204和作业同步内容发现了多个同步时间戳目录:Staged-> Online:预期目标8796388262972972,但是发现了[8796388295740]
  16:03:08,252 [DEBUG] [Thread-28](00000NXB)[CatalogVersionSyncMaster] Stats <00000NXB maxLine:4(+4)dumped:1(+1)cache:0%(hits:0,misses:9 total)  >
  16:03:08,253 [INFO] [Thread-28](00000NXB)[CatalogVersionSyncMaster] 1.通过,0(+0)的0个项目已处理(0%),0.00个项目/秒,1(+1,死锁:0  )项被丢弃。
  16:03:08,266 [DEBUG] [Thread-28](00000NXB)[CatalogVersionSyncCronJob]在媒体sync_schedule_8797207396853(8798814535710)中保存了1个转储
  16:03:08,271 [DEBUG] [Thread-28](00000NXB)[CatalogVersionSyncMaster]完成同步00000NXB(第1行,第0行,先前的转储-1,当前的转储1)
  16:03:08,278 [DEBUG] [Thread-28](00000NXB)[CatalogVersionSyncMaster]开始同步00000NXB [8797207396853](转2,上一个转储1,跳过0的行,调用1)
  16:03:08,279 [DEBUG] [SyncWorker <00000NXB 3 of 8>](00000NXB)[CatalogVersionSyncWorker]同步工作器SyncWorker <00000NXB 3 of 8>获取<8796420932655-> null []>
  16:03:08,285 [ERROR] [SyncWorker <00000NXB 3 of 8>](00000NXB)[AbstractItemCopyContext]为8796421030954找到重复的对应项:得到8796421096490并发现8796421063722-忽略第二个匹配项
  16:03:08,296 [DEBUG] [Thread-28](00000NXB)[CatalogVersionSyncMaster] Stats <00000NXB maxLine:4(+4)转储:-1(+ -1)缓存:0%(命中:0,未命中:12 总计)>
  16:03:08,297 [INFO] [Thread-28](00000NXB)[CatalogVersionSyncMaster] 2.通过,0(+0)的1个项目已处理(0%),0.00个项目/秒,0(+0,死锁:0  )项被丢弃。