Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-14116

Joining parallel or inclusive gateway async after makes execution stuck on joining inclusive gateway

XMLWordPrintable

    • Icon: Bug Report Bug Report
    • Resolution: Fixed
    • Icon: L3 - Default L3 - Default
    • 7.17.0, 7.16.6, 7.17.0-alpha5
    • 7.17.0, 7.14.13, 7.15.7, 7.16.1
    • engine

      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:

      1. Job A: transition-notify-listener-take$Flow_0wno03o
      2. 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):

      1. Only create the transition-notify-listener-take$Flow_0wno03o job when an inclusive/parallel gateway joins multiple executions.
      2. Adjust the InclusiveGatewayActivityBehavior to trigger immediately when the other child executions cannot reach the joining inclusive gateway.

      Hints (optional):

        This is the controller panel for Smart Panels app

              Unassigned Unassigned
              tassilo.weidner Tassilo Weidner
              Tobias Metzke-Bernstein Tobias Metzke-Bernstein
              Tassilo Weidner Tassilo Weidner
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: