Uploaded image for project: 'Kogito'
  1. Kogito
  2. KOGITO-6904

Bpmn parallel async rest calls fail

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.23.0.Final
    • 1.18.0.Final
    • Core Engine
    • None
    • False
    • None
    • False
    • Hide
      1. Compile process app mvn clean package
      2. Run infra services docker-compose up
      3. Run process app mvn quarkus:dev
      4. Start workflow instance
        curl -X 'POST' \
          'http://localhost:8080/parallel' \
          -H 'accept: */*' \
          -H 'Content-Type: application/json' \
          -d '{
          "username": "test"
        }' 

        5. Go to management console http://localhost:8280 or see logs

      Problem behavior:

      • some of activity instances fail with error (random, see image)

      Expected behavior:

      • workflow completes OK, just like without Async setting on

      Error stack trace

      2022-03-23 08:06:42,949 ERROR [org.jbp.wor.ins.imp.WorkflowProcessInstanceImpl] (executor-thread-4) Unexpected error while executing node REST2 in process instance b76c31ce-9794-430e-b8d9-ce36866b0343: org.jbpm.workflow.instance.WorkflowRuntimeException: [parallel:b76c31ce-9794-430e-b8d9-ce36866b0343 - REST2:9] -- null source
              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.getExceptionScopeInstance(WorkItemNodeInstance.java:198)
              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.handleException(WorkItemNodeInstance.java:192)
              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:182)
              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:154)
              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:225)
              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:424)
              at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:409)
              at org.jbpm.workflow.core.node.AsyncEventNodeInstance.triggerCompleted(AsyncEventNodeInstance.java:167)
              at org.jbpm.workflow.core.node.AsyncEventNodeInstance$AsyncExternalEventListener.signalEvent(AsyncEventNodeInstance.java:65)
              at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:623)
              at org.kie.kogito.process.impl.AbstractProcessInstance.send(AbstractProcessInstance.java:269)
              at org.kie.services.jobs.impl.TriggerJobCommand.lambda$execute$0(TriggerJobCommand.java:50)
              at java.base/java.util.Optional.map(Optional.java:260)
              at org.kie.services.jobs.impl.TriggerJobCommand.lambda$execute$1(TriggerJobCommand.java:48)
              at org.kie.kogito.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:33)
              at org.kie.services.jobs.impl.TriggerJobCommand.execute(TriggerJobCommand.java:46)
              at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource.triggerTimer(CallbackJobsServiceResource.java:60)
              at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource_Subclass.triggerTimer$$superforward1(Unknown Source)
              at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource_Subclass$$function$$1.apply(Unknown Source)
              at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
              at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
              at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)
              at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)
              at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
              at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
              at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
              at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource_Subclass.triggerTimer(Unknown Source)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
              at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.base/java.lang.reflect.Method.invoke(Method.java:568)
              at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)
              at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)
              at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)
              at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)
              at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)
              at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
              at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
              at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
              at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
              at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
              at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
              at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
              at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
              at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)
              at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:91)
              at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)
              at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
              at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
              at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
              at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
              at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
              at java.base/java.lang.Thread.run(Thread.java:833)
      Caused by: java.lang.IllegalArgumentException: null source
              at java.base/java.util.EventObject.<init>(EventObject.java:57)
              at org.drools.core.event.ProcessEvent.<init>(ProcessEvent.java:33)
              at org.jbpm.process.instance.event.KogitoProcessWorkItemTransitionEventImpl.<init>(KogitoProcessWorkItemTransitionEventImpl.java:34)
              at org.jbpm.process.instance.event.KogitoProcessEventSupportImpl.fireBeforeWorkItemTransition(KogitoProcessEventSupportImpl.java:214)
              at org.jbpm.process.instance.LightWorkItemManager.transitionWorkItem(LightWorkItemManager.java:207)
              at org.jbpm.process.instance.LightWorkItemManager.transitionWorkItem(LightWorkItemManager.java:194)
              at org.jbpm.process.instance.LightWorkItemManager.completeWorkItem(LightWorkItemManager.java:155)
              at org.kogito.workitem.rest.RestWorkItemHandler.executeWorkItem(RestWorkItemHandler.java:113)
              at org.kie.kogito.handlers.parallelRestWorkItemHandler_Subclass.executeWorkItem$$superforward1(Unknown Source)
              at org.kie.kogito.handlers.parallelRestWorkItemHandler_Subclass$$function$$21.apply(Unknown Source)
              at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
              at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
              at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)
              at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)
              at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
              at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
              at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
              at org.kie.kogito.handlers.parallelRestWorkItemHandler_Subclass.executeWorkItem(Unknown Source)
              at org.kie.kogito.handlers.parallelRestWorkItemHandler_ClientProxy.executeWorkItem(Unknown Source)
              at org.jbpm.process.instance.LightWorkItemManager.internalExecuteWorkItem(LightWorkItemManager.java:80)
              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.lambda$internalTr                                                  igger$0(WorkItemNodeInstance.java:155)
              at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:168)
              ... 54 more
       
      Show
      Compile process app mvn clean package Run infra services docker-compose up Run process app mvn quarkus:dev Start workflow instance curl -X 'POST' \ 'http: //localhost:8080/parallel' \ -H 'accept: */*' \ -H 'Content-Type: application/json' \ -d '{ "username" : "test" }' 5. Go to management console http://localhost:8280 or see logs Problem behavior: some of activity instances fail with error (random, see image) Expected behavior: workflow completes OK, just like without Async setting on Error stack trace 2022-03-23 08:06:42,949 ERROR [org.jbp.wor.ins.imp.WorkflowProcessInstanceImpl] (executor-thread-4) Unexpected error while executing node REST2 in process instance b76c31ce-9794-430e-b8d9-ce36866b0343: org.jbpm.workflow.instance.WorkflowRuntimeException: [parallel:b76c31ce-9794-430e-b8d9-ce36866b0343 - REST2:9] -- null source         at org.jbpm.workflow.instance.node.WorkItemNodeInstance.getExceptionScopeInstance(WorkItemNodeInstance.java:198)         at org.jbpm.workflow.instance.node.WorkItemNodeInstance.handleException(WorkItemNodeInstance.java:192)         at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:182)         at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:154)         at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:225)         at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:424)         at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:409)         at org.jbpm.workflow.core.node.AsyncEventNodeInstance.triggerCompleted(AsyncEventNodeInstance.java:167)         at org.jbpm.workflow.core.node.AsyncEventNodeInstance$AsyncExternalEventListener.signalEvent(AsyncEventNodeInstance.java:65)         at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:623)         at org.kie.kogito.process.impl.AbstractProcessInstance.send(AbstractProcessInstance.java:269)         at org.kie.services.jobs.impl.TriggerJobCommand.lambda$execute$0(TriggerJobCommand.java:50)         at java.base/java.util.Optional.map(Optional.java:260)         at org.kie.services.jobs.impl.TriggerJobCommand.lambda$execute$1(TriggerJobCommand.java:48)         at org.kie.kogito.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:33)         at org.kie.services.jobs.impl.TriggerJobCommand.execute(TriggerJobCommand.java:46)         at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource.triggerTimer(CallbackJobsServiceResource.java:60)         at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource_Subclass.triggerTimer$$superforward1(Unknown Source)         at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource_Subclass$$function$$1.apply(Unknown Source)         at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)         at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)         at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)         at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)         at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)         at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)         at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)         at org.kie.kogito.jobs.management.quarkus.CallbackJobsServiceResource_Subclass.triggerTimer(Unknown Source)         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)         at java.base/java.lang.reflect.Method.invoke(Method.java:568)         at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)         at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)         at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)         at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)         at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)         at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)         at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)         at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)         at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)         at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)         at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)         at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)         at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)         at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)         at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)         at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)         at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)         at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)         at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:91)         at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)         at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)         at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)         at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)         at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)         at java.base/java.lang. Thread .run( Thread .java:833) Caused by: java.lang.IllegalArgumentException: null source         at java.base/java.util.EventObject.<init>(EventObject.java:57)         at org.drools.core.event.ProcessEvent.<init>(ProcessEvent.java:33)         at org.jbpm.process.instance.event.KogitoProcessWorkItemTransitionEventImpl.<init>(KogitoProcessWorkItemTransitionEventImpl.java:34)         at org.jbpm.process.instance.event.KogitoProcessEventSupportImpl.fireBeforeWorkItemTransition(KogitoProcessEventSupportImpl.java:214)         at org.jbpm.process.instance.LightWorkItemManager.transitionWorkItem(LightWorkItemManager.java:207)         at org.jbpm.process.instance.LightWorkItemManager.transitionWorkItem(LightWorkItemManager.java:194)         at org.jbpm.process.instance.LightWorkItemManager.completeWorkItem(LightWorkItemManager.java:155)         at org.kogito.workitem. rest .RestWorkItemHandler.executeWorkItem(RestWorkItemHandler.java:113)         at org.kie.kogito.handlers.parallelRestWorkItemHandler_Subclass.executeWorkItem$$superforward1(Unknown Source)         at org.kie.kogito.handlers.parallelRestWorkItemHandler_Subclass$$function$$21.apply(Unknown Source)         at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)         at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)         at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)         at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(Unknown Source)         at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)         at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)         at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)         at org.kie.kogito.handlers.parallelRestWorkItemHandler_Subclass.executeWorkItem(Unknown Source)         at org.kie.kogito.handlers.parallelRestWorkItemHandler_ClientProxy.executeWorkItem(Unknown Source)         at org.jbpm.process.instance.LightWorkItemManager.internalExecuteWorkItem(LightWorkItemManager.java:80)         at org.jbpm.workflow.instance.node.WorkItemNodeInstance.lambda$internalTr                                                  igger$0(WorkItemNodeInstance.java:155)         at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:168)         ... 54 more
    • 2022 Week 20-22 (from May 16)

    Description

      I'm researching kogito use cases and created a parallel split test case with async rest tasks.

      My project is here https://github.com/StoneToken/workflow-engines-load-test/tree/master/kogito-bpmn-async.

       

      Attachments

        Activity

          People

            cnicolai@redhat.com Cristiano Nicolai
            yremishevsky Yury Remishevsky
            Marian Macik Marian Macik
            Marian Macik Marian Macik
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: