Open
Description
When running a workflow that starts a child and cancels it:
wf := func(ctx workflow.Context) error {
childCtx, cancel := workflow.WithCancel(ctx)
defer cancel()
fut := workflow.ExecuteChildWorkflow(childCtx, waitForCancelWorkflow)
if err := fut.GetChildWorkflowExecution().Get(ctx, nil); err != nil {
return err
}
cancel()
return fut.Get(ctx, nil)
}
func waitForCancelWorkflow(ctx workflow.Context) error {
return workflow.Await(ctx, func() bool { return false })
}
I'm getting inconsistent outcomes:
With server:
workflow execution error (type: func1, workflowID: 1eb1f045-b804-429f-b99e-57e45023a6e8, runID: 4821bd7c-b9f6-4684-92be-ab7354eefc36): canceled
With test env:
workflow execution error (type: func1, workflowID: default-test-workflow-id, runID: default-test-run-id): child workflow execution error (type: waitForCancelWorkflow, workflowID: default-test-run-id_1, runID: default-test-run-id_1_RunID, initiatedEventID: 0, startedEventID: 0): canceled
The test env is consistent with the behavior of other SDKs, but it's likely too late to change the cancelation behavior with the real server for consistency. I propose we change the test env to be consistent with the "real" env.