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.
workflow.go
115
>
namespaceDeleteDelay, _ = time.ParseDuration(newNamespaceDeleteDelayStr)
116
>
117
>
var updateResult string
118
>
if namespaceDeleteDelay == 0 {
119
>
logger.Info("Namespace delete delay is removed. Namespace will be deleted immediately after all workflow executions are deleted.")
120
>
updateResult = "Namespace delete delay is removed."
121
>
} else {
122
>
logger.Info("Namespace delete delay is updated.", "new-delete-delay", namespaceDeleteDelay)
123
>
updateResult = fmt.Sprintf("Namespace delete delay is updated to %s.", namespaceDeleteDelay)
124
>
}
125
127
>
cancelDeleteDelay()
128
>
logger.Info("Existing namespace delete delay timer is cancelled.")
129
>
updateResult = "Existing namespace delete delay timer is cancelled. " + updateResult
130
>
}
131
>
return updateResult, nil
132
}, workflow.UpdateHandlerOptions{
133
>
Validator: func(_ workflow.Context, newNamespaceDeleteDelayStr string) error {
workflow.go
134
>
if newNamespaceDeleteDelayStr == "" {
135
return errors.NewInvalidArgument("delay duration is required", nil)
136
}
137
>
newDuration, err := time.ParseDuration(newNamespaceDeleteDelayStr)
workflow.go
138
>
if err != nil {
139
return errors.NewInvalidArgument("unable to parse delay duration", err)
140
}
142
return errors.NewInvalidArgument("delay duration must be positive", nil)
143
}
145
return errors.NewInvalidArgument("delay duration must be less than 30 days", nil)
146
}
148
},
149
})