5.5.1间隔触发器不触发

2020-09-18 14:06发布

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

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


只需在带有developer config的全新5.5.1安装中重现此问题。 当我在具有间隔间隔的同步作业上指定触发器时,不会触发它。 在特定时间戳上触发的触发器确实会触发。 保存触发器时,我还注意到了此堆栈跟踪:

 在此处输入代码错误[000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [PoolableThread]执行000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:实体 找不到(pk = 8796111995381名称='de.hybris.platform.persistence.processing_CronJob'类型代码='501'db表='cronjobs')
  de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796111995381 name ='de.hybris.platform.persistence.processing_CronJob'type code ='501'db table ='cronjobs')
      在de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)
      在de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:185)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
      com.sun.proxy。$ Proxy161.getModifiedTime(未知来源)
      在de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
      在de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1539)
      在de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1410)
      在de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1420)
      在de.hybris.platform.jalo.Item.access $ 0(Item.java:1418)
      在de.hybris.platform.jalo.Item $ CacheableItemLogic.getCacheMap(Item.java:560)
      在de.hybris.platform.jalo.Item $ CachedGetter.get(Item.java:686)
      在de.hybris.platform.jalo.ExtensibleItem.getProperty(ExtensibleItem.java:364)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:432)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2474)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:441)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2461)
      在de.hybris.platform.cronjob.jalo.CronJob.setLog4JMDC(CronJob.java:3917)
      在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:752)
      在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:747)
      在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:667)
      在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
 
  错误[000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [作业]执行000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:找不到实体(pk = 8796111995381 name =  'de.hybris.platform.persistence.processing_CronJob'类型代码='501'数据库表='cronjobs')
  de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796111995381 name ='de.hybris.platform.persistence.processing_CronJob'type code ='501'db table ='cronjobs')
      在de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)
      在de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:185)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
      com.sun.proxy。$ Proxy161.getModifiedTime(未知来源)
      在de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
      在de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1539)
      在de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1410)
      在de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1420)
      在de.hybris.platform.jalo.Item.access $ 0(Item.java:1418)
      在de.hybris.platform.jalo.Item $ CacheableItemLogic.getCacheMap(Item.java:560)
      在de.hybris.platform.jalo.Item $ CachedGetter.get(Item.java:686)
      在de.hybris.platform.jalo.ExtensibleItem.getProperty(ExtensibleItem.java:364)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:432)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2474)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:441)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2461)
      在de.hybris.platform.cronjob.jalo.CronJob.setLog4JMDC(CronJob.java:3917)
      在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:752)
      在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:747)
      在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:667)
      在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
 

  

我还在全新的5.5.0安装上尝试了此操作,以完全相同的方式添加了间隔间隔触发器,并且确实触发了这些操作。

有什么想法吗?

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

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


只需在带有developer config的全新5.5.1安装中重现此问题。 当我在具有间隔间隔的同步作业上指定触发器时,不会触发它。 在特定时间戳上触发的触发器确实会触发。 保存触发器时,我还注意到了此堆栈跟踪:

 在此处输入代码错误[000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [PoolableThread]执行000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:实体 找不到(pk = 8796111995381名称='de.hybris.platform.persistence.processing_CronJob'类型代码='501'db表='cronjobs')
  de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796111995381 name ='de.hybris.platform.persistence.processing_CronJob'type code ='501'db table ='cronjobs')
      在de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)
      在de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:185)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
      com.sun.proxy。$ Proxy161.getModifiedTime(未知来源)
      在de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
      在de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1539)
      在de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1410)
      在de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1420)
      在de.hybris.platform.jalo.Item.access $ 0(Item.java:1418)
      在de.hybris.platform.jalo.Item $ CacheableItemLogic.getCacheMap(Item.java:560)
      在de.hybris.platform.jalo.Item $ CachedGetter.get(Item.java:686)
      在de.hybris.platform.jalo.ExtensibleItem.getProperty(ExtensibleItem.java:364)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:432)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2474)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:441)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2461)
      在de.hybris.platform.cronjob.jalo.CronJob.setLog4JMDC(CronJob.java:3917)
      在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:752)
      在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:747)
      在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:667)
      在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
 
  错误[000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [作业]执行000000ET :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:找不到实体(pk = 8796111995381 name =  'de.hybris.platform.persistence.processing_CronJob'类型代码='501'数据库表='cronjobs')
  de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796111995381 name ='de.hybris.platform.persistence.processing_CronJob'type code ='501'db table ='cronjobs')
      在de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)
      在de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOutsideTx(RemoteInvocationHandler.java:185)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:164)
      在de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
      com.sun.proxy。$ Proxy161.getModifiedTime(未知来源)
      在de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
      在de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1539)
      在de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1410)
      在de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1420)
      在de.hybris.platform.jalo.Item.access $ 0(Item.java:1418)
      在de.hybris.platform.jalo.Item $ CacheableItemLogic.getCacheMap(Item.java:560)
      在de.hybris.platform.jalo.Item $ CachedGetter.get(Item.java:686)
      在de.hybris.platform.jalo.ExtensibleItem.getProperty(ExtensibleItem.java:364)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:432)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2474)
      在de.hybris.platform.cronjob.jalo.GeneratedCronJob.getCode(GeneratedCronJob.java:441)
      在de.hybris.platform.cronjob.jalo.CronJob.getCode(CronJob.java:2461)
      在de.hybris.platform.cronjob.jalo.CronJob.setLog4JMDC(CronJob.java:3917)
      在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:752)
      在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:747)
      在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:667)
      在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:198)
 

  

我还在全新的5.5.0安装上尝试了此操作,以完全相同的方式添加了间隔间隔触发器,并且确实触发了这些操作。

有什么想法吗?

付费偷看设置
发送
10条回答
代楠1984
1楼 · 2020-09-18 14:30.采纳回答

我认为升级到5.5.1版时出现的问题如下。 对于每个Trigger项,现在必须有一个对应的TriggerTask项。 这些TriggerTask项目仅为新创建的Trigger项目创建。 这是在CronJobManager.afterItemCreation中完成的。 对于已经存在的Trigger项,TriggerTask项丢失,需要手动创建。 在升级到Hybris 5.5.1之后,我们使用了以下脚本来使触发器工作:

  import de.hybris.platform.cronjob.jalo.CronJobManager;
  导入de.hybris.platform.cronjob.jalo.Trigger;
  导入de.hybris.platform.jalo.JaloSession;
  导入de.hybris.platform.jalo.flexiblesearch.FlexibleSearch;
  导入java.util.List;
 
  最终的List 触发器= FlexibleSearch.getInstance()。search("从{Trigger}中选择SELECT {pk}",Trigger.class).getResult();
  对于(最终触发器触发器:触发器){
      println"为触发器创建TriggerTask + +属于cronjob的trigger.getPK()+"(trigger.getCronJob()== null?" null":trigger.getCronJob()。getCode());
      CronJobManager.getInstance()。afterItemCreation(JaloSession.getCurrentSession()。getSessionContext(),trigger.getComposedType(),trigger,null);
  }
  
南山jay
2楼-- · 2020-09-18 14:49

感谢脚本,当我尝试使用groovy脚本执行同步作业时,即使在5.1版本中,这也对我有帮助

小灯塔
3楼-- · 2020-09-18 14:52

在这里遇到完全相同的问题。 从5.3.0升级到5.5.0,没有问题。 从5.5.0升级到5.5.1还导致cronjob触发器不再触发。 另外,受影响的cronjobs会在平台的每次启动时重复出现。...

能不能别闹
4楼-- · 2020-09-18 14:50
 找不到实体(pk = 8796191523317 name = de.hybris.platform.persistence.processing_CronJob'类型代码 ='501'数据库表='cronjobs')

  

似乎cronjob正在尝试运行,然后正确保存。 如果您检查该PK,则它确实存在(但尚未启动,但状态仍为" NEW")。

" task.polling.interval"的作用是什么? 并有一种方法(不必更改/扩展/覆盖现有的hybris代码)来更改行为,以便在cronjob尝试运行之前正确保存它。

当学会了学习
5楼-- · 2020-09-18 14:37

大家好,

从hybris 5.4.0迁移到5.5.1时,我们遇到了同样的问题。 对于我们来说,以下方法可以解决问题:

在CronJob上为"触发器"项找到"任务"项(Typesearch)。 ("任务"项与"触发器"有关系,反之亦然)

将执行时间更新为不久的将来。

在那之后,我们必须手动创建所有触发任务。

关于

Alawn_Xu
6楼-- · 2020-09-18 14:33

您解决了这个问题吗?

蓋茨
7楼-- · 2020-09-18 14:57

嗨,

hybris 5.6.0.1也有类似的问题。 在手动编辑相应的TriggerTask并将其执行日期设置为触发器的日期之前,该触发器不会执行任何操作。 我还必须将nodeId从1更改为0,不确定是否与此问题有关。

之后,创建了cronjob,但未执行它,并且得到与原始海报相同的错误消息。 我可以手动执行生成的cronjob,尽管没有错误。

一周热门 更多>