169
}
170
171
>
func (a *localActivities) GenerateDeletedNamespaceNameActivity(ctx context.Context, nsID namespace.ID, nsName namespace.Name) (namespace.Name, error) {
activities.go
172
>
ctx = headers.SetCallerName(ctx, nsName.String())
173
>
174
>
logger := log.With(a.logger,
175
>
tag.WorkflowNamespace(nsName.String()),
176
>
tag.WorkflowNamespaceID(nsID.String()))
177
>
178
>
const initialSuffixLength = 5
179
>
180
>
for suffixLength := initialSuffixLength; suffixLength < len(nsID.String()); suffixLength++ { // Just in case. 5 chars from ID should be good enough.
181
>
suffix := fmt.Sprintf("-deleted-%s", nsID.String()[:suffixLength])
182
>
if strings.HasSuffix(nsName.String(), suffix) {
183
>
logger.Info("Namespace is already renamed for deletion")
184
>
return nsName, nil
185
>
}
186
>
newName := fmt.Sprintf("%s%s", nsName, suffix)
187
>
188
>
_, err := a.metadataManager.GetNamespace(ctx, &persistence.GetNamespaceRequest{
189
>
Name: newName,
190
>
})
191
>
switch err.(type) {
192
>
case nil:
193
>
logger.Warn("Regenerate namespace name due to collision.", tag.String("wf-new-namespace", newName))
194
>
case *serviceerror.NamespaceNotFound:
195
>
logger.Info("Generated new name for deleted namespace.", tag.String("wf-new-namespace", newName))
196
>
return namespace.Name(newName), nil
197
default:
198
logger.Error("Unable to get namespace details.", tag.Error(err))