conductor
conductor copied to clipboard
duplicated subworkflow in FORK_JOIN_DYNAMIC
Describe the bug
two subworkflow were forked in FORK_JOIN_DYNAMIC.
Details Conductor version: Persistence implementation: MySQL Queue implementation: Dynoqueues Lock: Local Workflow definition: Task definition: Event handler definition:
I've got the same problem (duplications of subworkflow invocation) even without dynamic fork. I found out that problem lies directly in SUB_WORKFLOW
task status flow.
SubWorkflow changes state from SCHEDULED
to IN_PROGRESS
only when child workflow is started and it appears that the time between taking subworkflow task from the queue and switching its state to IN_PROGRESS
is often enough for WorkflowRepairService
to push this task on the queue again and start it.
Only workaround that comes to my mind is to switch the repair service off (set conductor.workflow-repair-service.enabled
property to false). Is it actually only solution to this problem?
Wouldn't be better if SubWorkflow changed the state to IN_PROGRESS
just after it's taken from the queue?
After moving to v3.13.8 I've started getting this error when calling subworkflow in FORK_JOIN_DYNAMIC:
Workflow ${workflowid} is terminated because of Parent workflow has been terminated with reason: No dynamic tasks could be created for the Workflow: ${workflowname.id}, Dynamic Fork Task: ${taskname}/${taskreferencename}Attempted to create a duplicate task reference name: ${taskreferencename}
(comes from here)
But all the task descriptions I feed into the FORK_JOIN_DYNAMIC have a different taskreferencename (doublechecked it in several ways). Could this be related to this issue?
I use FORK_JOIN_DYNAMIC in several other workflows (but with simple tasks instead of call_sub_workflow) and this doesn't seem to happen there...
setting conductor.workflow-repair-service.enabled to false did not help...