Is goto
a good way to handle retry workflow failure, if a workflow should never be killed? Or would you like to recommend something else?
pointA:
ctx = cWorkflow.WithActivityOptions(ctx, DefaultActivityOptions)
workflowManager, err := prepareWorkflowManager(ctx, workflowId)
if err != nil {
// todo: emit metric here
logger.Error(common.WorkflowErrorPrefix+"Failed to prepare workflow manager", zap.Error(err))
_ = cWorkflow.Sleep(ctx, 2*time.Hour)
goto pointA:
}
logger.Info("Workflow Manager Prepared")