Wso2 处理持久化作业checkDuplicateCSetKey时出错

Wso2 处理持久化作业checkDuplicateCSetKey时出错,wso2,Wso2,问题是由以下数据造成的: BPEL流程有3个版本(v1、v2、v3) 版本v1已被删除(从注册表和bpel/-123中),但这些实例仍保留在数据库中 版本v1的旧实例保持活动状态,id相关性=400200(例如) 启动关联id为400200的v3版本的新实例时,会引发异常 事实上,每个新实例的ApacheODE都会查找是否有一个实例处于活动状态并且具有相同的关联id(checkReplicatcs..)。在我们的上下文中,ApacheODE找到版本v1的一个实例并返回NullpointerExc

问题是由以下数据造成的:

  • BPEL流程有3个版本(v1、v2、v3)

  • 版本v1已被删除(从注册表和bpel/-123中),但这些实例仍保留在数据库中

  • 版本v1的旧实例保持活动状态,id相关性=400200(例如)

  • 启动关联id为400200的v3版本的新实例时,会引发异常

  • 事实上,每个新实例的ApacheODE都会查找是否有一个实例处于活动状态并且具有相同的关联id(checkReplicatcs..)。在我们的上下文中,ApacheODE找到版本v1的一个实例并返回NullpointerException,因为它在其注册表中找不到进程v1

    解决方案:清除v1版活动状态下的旧实例

    TID: [-1] [] [2019-11-22 13:18:34,362]  WARN {org.apache.ode.scheduler.simple.SimpleScheduler} -  Error while processing a persisted job: Job hqejbhcnphreqf4l2mpcoj time: 2019-11-22 13:18:31 WEST transacted: true persisted: true details: JobDetails( instanceId: null mexId: hqejbhcnphreqf4l2mpcoi processId: {http://wso2.org/bps/sample}my-process-7 type: INVOKE_INTERNAL channel: null correlatorId: null correlationKeySet: null retryCount: 4 inMem: false detailsExt: {enqueue=false}) {org.apache.ode.scheduler.simple.SimpleScheduler}
    java.lang.NullPointerException
        at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.checkDuplicateCSetKey(BpelRuntimeContextImpl.java:621)
        at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.checkDuplicateCSets(BpelRuntimeContextImpl.java:578)
        at org.apache.ode.bpel.runtime.PICK$WAITING$2.onRequestRcvd(PICK.java:300)
        at sun.reflect.GeneratedMethodAccessor1427.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
        at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
        at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:1002)
        at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208)
        at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283)
        at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:224)
        at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279)
        at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:434)
        at org.apache.ode.bpel.engine.BpelEngineImpl.sendMyRoleFault(BpelEngineImpl.java:835)
        at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:581)
        at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:467)
        at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:633)
        at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:627)
        at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:298)
        at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:253)
        at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:627)
        at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:611)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(T