Engine waiting in a service task

Hi folks,

I observe an intresting behaviour of the process engine by the customer. The process model has two parallel branches one with the Service Task and another branch with the User Task. The engine seems to get stuck on the service task. The cockpit shows the instance token on the service task. There are no errors in log about this. In the same time, I can see a log statement about the completion of the user task:

Caused by: org.camunda.bpm.engine.ProcessEngineException: this activity doesn’t accept signals
at org.camunda.bpm.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.signal(FlowNodeActivityBehavior.java:53) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.bpmn.behavior.AbstractBpmnActivityBehavior.signal(AbstractBpmnActivityBehavior.java:89) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.pvm.runtime.PvmExecutionImpl.signal(PvmExecutionImpl.java:262) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.persistence.entity.TaskEntity.complete(TaskEntity.java:231) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.cmd.CompleteTaskCmd.completeTask(CompleteTaskCmd.java:58) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:52) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:27) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:97) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.interceptor.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:59) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:32) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:171) [camunda-engine-7.2.6-SNAPSHOT.jar:7.2.6-SNAPSHOT]
at org.camunda.bpm.engine.cdi.BusinessProcess.completeTask(BusinessProcess.java:331) [camunda-engine-cdi-7.2.0.jar:7.2.0]

The Service Task is marked as “exclusive”, and the bug appears only sometimes (not reproducable).

Any Ideas?

Kind regards,

Simon

Hi Simon,

Can you please share a process model that reproduces this?
Can you reproduce this on a version >= 7.3? 7.2 is already out of maintenance.

Cheers,
Thorben

Hi Thorben,

we plan to migrate to 7.5 and I will switch to JIRA then if it is still there. Before opening an issue, I just wanted to make sure that this is not just “works as designed” issue for example caused by the completion of the user task during the execution of a async exclusive service task (which is a call to external system).

Kind regards,

Simon

This one is just a drawing (no properties are set)

diagram.bpmn (9.0 KB)

Hi Simon,

Sounds like a bug to me without knowing any more specifics. However, I haven’t got an idea why that would happen in this process :slight_smile:

Cheers,
Thorben

We try to make the Service task not exclusive (but still async) and will check if it changes the behaviour of the engine. This is ok in this case, because the user task in the bottom has nothing to do with the service task on the top, so no “exclusive” execution is required.

Hello! We are getting the same stacktrace and can’t reproduce the problem. Could you please tell whether your solution with “exclusive” flag had worked? Any additional information on this topic would be appreciated!

Sorry, I wonder what project I was working for three years ago and really don’t remember how we solved this.

@baladur can you upload your bpmn model file?

@aravindhrs error-diagram.bpmn (4.7 KB) Hello, example diagram is pretty simple, even no parallel gateways. As for our environment, we use Spring Boot and JSF. When user presses a button, JSF calls taskService.complete().
As for stacktrace, it seems like during task completion activity behaviour in execution table is updated by next task which doesn’t override signal method.