66
)
67
68
>
func validateParams(params *ReclaimResourcesParams) error {
workflow.go
69
>
if params.NamespaceID.IsEmpty() {
70
return errors.NewInvalidArgument("namespace ID is required", nil)
71
}
73
return errors.NewInvalidArgument("namespace is required", nil)
74
}
76
>
return nil
77
}
78
79
>
func ReclaimResourcesWorkflow(ctx workflow.Context, params ReclaimResourcesParams) (ReclaimResourcesResult, error) {
workflow.go
80
>
logger := log.With(
81
>
workflow.GetLogger(ctx),
82
>
tag.WorkflowType(WorkflowName),
83
>
tag.WorkflowNamespace(params.Namespace.String()),
84
>
tag.WorkflowNamespaceID(params.NamespaceID.String()))
85
>
logger.Info("Workflow started.")
86
>
87
>
var result ReclaimResourcesResult
88
>
if err := validateParams(¶ms); err != nil {
89
return result, err
90
}
91
92
>
mh := workflow.GetMetricsHandler(ctx).WithTags(map[string]string{"namespace": params.Namespace.String()})
workflow.go
93
>
defer func() {
94
>
if result.NamespaceDeleted {
95
mh.Counter(metrics.ReclaimResourcesNamespaceDeleteSuccessCount.Name()).Inc(1)
97
mh.Counter(metrics.ReclaimResourcesNamespaceDeleteFailureCount.Name()).Inc(1)
98
}
100
>
mh.Counter(metrics.ReclaimResourcesDeleteExecutionsSuccessCount.Name()).Inc(int64(result.DeleteSuccessCount))
101
>
}
102
>
if result.DeleteErrorCount > 0 {
103
mh.Counter(metrics.ReclaimResourcesDeleteExecutionsFailureCount.Name()).Inc(int64(result.DeleteErrorCount))
104
}
105
}()
106
107
>
ctx = workflow.WithTaskQueue(ctx, primitives.DeleteNamespaceActivityTQ)
workflow.go
108
>
109
>
var (
110
>
namespaceDeleteDelay = params.NamespaceDeleteDelay
111
>
cancelDeleteDelay workflow.CancelFunc
112
>
)
113
>
err := workflow.SetUpdateHandlerWithOptions(ctx, "update_namespace_delete_delay", func(ctx workflow.Context, newNamespaceDeleteDelayStr string) (string, error) {
114
// This must succeed because Update validator already validated the input.
115
namespaceDeleteDelay, _ = time.ParseDuration(newNamespaceDeleteDelayStr)