-
Bug Report
-
Resolution: Fixed
-
L3 - Default
-
7.17.0, 7.14.13, 7.15.7, 7.16.1
Environment (Required on creation):
No specific environment is needed to reproduce the bug.
Description (Required on creation; please attach any relevant screenshots, stacktraces, log files, etc. to the ticket):
A joining parallel or inclusive gateway with async after flag makes execution stuck on joining inclusive gateway.
Please consider the following minimal process model:
At the joining parallel gateway, two jobs with the following handler configurations are created:
- Job A: transition-notify-listener-take$Flow_0wno03o
- Job B: activity-end
Heads-up: Even though the example uses parallel gateways to create the two jobs, the same problem exists if the jobs are created via inclusive gateways, and the bug affects both scenarios.
Steps to reproduce (Required on creation):
See failing test cases:
https://github.com/camunda/camunda-bpm-platform/commit/172fa9575cdbf98e71bfaec2b9254d49e23a039c
Observed Behavior (Required on creation):
- When Job A is executed first, the execution is stuck at the joining inclusive gateway, which doesn't trigger.
- When Job B is executed first, the process completes since the joining inclusive gateway triggers.
Expected behavior (Required on creation):
The execution is not stuck at the joining inclusive gateway.
Root Cause (Required on prioritization):
- When Job A is executed first, the joining inclusive gateway is reached by this job's execution A.
- The joining inclusive gateway checks if the second execution related to Job B (execution B) can reach the joining inclusive gateway as well. See InclusiveGatewayActivityBehavior#isReachable.
- From a graph's perspective, execution B CAN also reach the joining inclusive gateway.
- The gateway does not trigger when execution A arrives and waits for execution B.
- Execution B will, based on Job B's operation, be destroyed upon job execution and never reaches the joining inclusive gateway.
- The process instance is stuck.
Solution Ideas (Optional):
- Only create the transition-notify-listener-take$Flow_0wno03o job when an inclusive/parallel gateway joins multiple executions.
- Adjust the InclusiveGatewayActivityBehavior to trigger immediately when the other child executions cannot reach the joining inclusive gateway.