I am using the go-sdk.
I have a parent workflow that will create multiple child workflows. I want the child workflows to run async. So I set the parent policy of each of the child workflow values to be
PARENT_CLOSE_POLICY_ABANDON. Then I call
GetChildWorkflowExecution().Get(ctx, nil) on each of the child workflows to ensure they are started before finishing the parent workflow, as specified here.
The parent workflow will run on a cron interval to start the child workflows. I only want 1 instance of each child workflow to be running at a time, so I use the workflow ID reuse policy value
WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE when starting the workflows.
The problem I am running into is when the parent workflow begins and there is already a child workflow running. I will try to execute a new child workflow using the same workflow ID of a child workflow that is already running. When I call
GetChildWorkflowExecution().Get(ctx, nil) on the ChildWorkflowFuture it will just block indefinitely.
In the temporal UI I can see in the history of the parent workflow it says
How would I go about actually determining if the workflow execution fails? I do not want to call
Get() on the ChildWorkflowFuture as I do not want to block until each the child workflows are finished, I only want to block until it is started.