Hi!
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 START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_EXISTS.
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.