From bae8f8f53e2bc6175a43b19a8172c9ed7d735dec Mon Sep 17 00:00:00 2001 From: Carly de Frondeville Date: Tue, 3 Feb 2026 12:26:10 -0800 Subject: [PATCH 1/5] don't use deprecated version string in cleanup --- .../aa_clean_old_deployments/feature.go | 31 +------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/features/deployment_versioning/aa_clean_old_deployments/feature.go b/features/deployment_versioning/aa_clean_old_deployments/feature.go index ad816ed7..d91c1451 100644 --- a/features/deployment_versioning/aa_clean_old_deployments/feature.go +++ b/features/deployment_versioning/aa_clean_old_deployments/feature.go @@ -60,10 +60,6 @@ func ListOldDeployments(ctx context.Context) ([]string, error) { allDeployments = append(allDeployments, deployment.Name) } } - - if err != nil { - return nil, err - } return allDeployments, nil } @@ -90,19 +86,7 @@ func DeleteDeployment(ctx context.Context, deploymentName string) error { AllowNoPollers: true, }) if err != nil { - // Try using unversioned string (needed if deployment was very old) - _, err = client.WorkflowService().SetWorkerDeploymentCurrentVersion(ctx, &workflowservice.SetWorkerDeploymentCurrentVersionRequest{ - Namespace: ns, - DeploymentName: deploymentName, - Version: "__unversioned__", - BuildId: "__unversioned__", - Identity: "feature-deployment-deleter", - IgnoreMissingTaskQueues: true, - AllowNoPollers: true, - }) - if err != nil { - return fmt.Errorf("failed to unset current version for deployment %s: %w", deploymentName, err) - } + return fmt.Errorf("failed to unset current version for deployment %s: %w", deploymentName, err) } _, err = client.WorkflowService().SetWorkerDeploymentRampingVersion(ctx, &workflowservice.SetWorkerDeploymentRampingVersionRequest{ Namespace: ns, @@ -112,19 +96,6 @@ func DeleteDeployment(ctx context.Context, deploymentName string) error { AllowNoPollers: true, }) if err != nil { - // Try using unversioned string (needed if deployment was very old) - _, err = client.WorkflowService().SetWorkerDeploymentRampingVersion(ctx, &workflowservice.SetWorkerDeploymentRampingVersionRequest{ - Namespace: ns, - DeploymentName: deploymentName, - Version: "__unversioned__", - BuildId: "__unversioned__", - Identity: "feature-deployment-deleter", - IgnoreMissingTaskQueues: true, - AllowNoPollers: true, - }) - if err != nil { - return fmt.Errorf("failed to unset ramping version for deployment %s: %w", deploymentName, err) - } return fmt.Errorf("failed to unset ramping version for deployment %s: %w", deploymentName, err) } From 471eb19575d92c4c6189a02063bc2f051035aa6a Mon Sep 17 00:00:00 2001 From: Carly de Frondeville Date: Tue, 3 Feb 2026 12:45:57 -0800 Subject: [PATCH 2/5] add to log to confirm build-docker-images is running my code --- .../deployment_versioning/aa_clean_old_deployments/feature.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/deployment_versioning/aa_clean_old_deployments/feature.go b/features/deployment_versioning/aa_clean_old_deployments/feature.go index d91c1451..ec0efd46 100644 --- a/features/deployment_versioning/aa_clean_old_deployments/feature.go +++ b/features/deployment_versioning/aa_clean_old_deployments/feature.go @@ -86,7 +86,7 @@ func DeleteDeployment(ctx context.Context, deploymentName string) error { AllowNoPollers: true, }) if err != nil { - return fmt.Errorf("failed to unset current version for deployment %s: %w", deploymentName, err) + return fmt.Errorf("CARLY failed to unset current version for deployment %s: %w", deploymentName, err) } _, err = client.WorkflowService().SetWorkerDeploymentRampingVersion(ctx, &workflowservice.SetWorkerDeploymentRampingVersionRequest{ Namespace: ns, From 3c7c05e40c63f62cc1956b9aa92c193fbd2c7145 Mon Sep 17 00:00:00 2001 From: Carly de Frondeville Date: Tue, 3 Feb 2026 14:07:38 -0800 Subject: [PATCH 3/5] don't pass AllowNoPollers=true --- .../deployment_versioning/aa_clean_old_deployments/feature.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/features/deployment_versioning/aa_clean_old_deployments/feature.go b/features/deployment_versioning/aa_clean_old_deployments/feature.go index ec0efd46..82968811 100644 --- a/features/deployment_versioning/aa_clean_old_deployments/feature.go +++ b/features/deployment_versioning/aa_clean_old_deployments/feature.go @@ -83,17 +83,15 @@ func DeleteDeployment(ctx context.Context, deploymentName string) error { DeploymentName: deploymentName, Identity: "feature-deployment-deleter", IgnoreMissingTaskQueues: true, - AllowNoPollers: true, }) if err != nil { - return fmt.Errorf("CARLY failed to unset current version for deployment %s: %w", deploymentName, err) + return fmt.Errorf("failed to unset current version for deployment %s: %w", deploymentName, err) } _, err = client.WorkflowService().SetWorkerDeploymentRampingVersion(ctx, &workflowservice.SetWorkerDeploymentRampingVersionRequest{ Namespace: ns, DeploymentName: deploymentName, Identity: "feature-deployment-deleter", IgnoreMissingTaskQueues: true, - AllowNoPollers: true, }) if err != nil { return fmt.Errorf("failed to unset ramping version for deployment %s: %w", deploymentName, err) From b99fa709d7a575ac892c5bc21a8ee49ca20c83a7 Mon Sep 17 00:00:00 2001 From: Carly de Frondeville Date: Tue, 3 Feb 2026 14:52:49 -0800 Subject: [PATCH 4/5] try with no workflow timeout --- .../deployment_versioning/aa_clean_old_deployments/feature.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/features/deployment_versioning/aa_clean_old_deployments/feature.go b/features/deployment_versioning/aa_clean_old_deployments/feature.go index 82968811..823d9447 100644 --- a/features/deployment_versioning/aa_clean_old_deployments/feature.go +++ b/features/deployment_versioning/aa_clean_old_deployments/feature.go @@ -22,6 +22,9 @@ var Feature = harness.Feature{ } return run, nil }, + StartWorkflowOptionsMutator: func(o *client.StartWorkflowOptions) { + o.WorkflowExecutionTimeout = 0 + }, } func CleanOldDeployments(ctx workflow.Context) (string, error) { From 6e64ec96081f282a354cda653ff6c0e07d28ba66 Mon Sep 17 00:00:00 2001 From: Carly de Frondeville Date: Tue, 3 Feb 2026 15:12:28 -0800 Subject: [PATCH 5/5] set workflow timeout to 5m and explain --- .../aa_clean_old_deployments/feature.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/features/deployment_versioning/aa_clean_old_deployments/feature.go b/features/deployment_versioning/aa_clean_old_deployments/feature.go index 823d9447..85bcd31a 100644 --- a/features/deployment_versioning/aa_clean_old_deployments/feature.go +++ b/features/deployment_versioning/aa_clean_old_deployments/feature.go @@ -23,7 +23,10 @@ var Feature = harness.Feature{ return run, nil }, StartWorkflowOptionsMutator: func(o *client.StartWorkflowOptions) { - o.WorkflowExecutionTimeout = 0 + // I observed this complete in 2 minutes 55 seconds when there were many Deployments + // to delete. If the deletions are happening frequently, this will likely be shorter. + // Giving a long timeout here to make sure it doesn't cause flakiness. + o.WorkflowExecutionTimeout = 5 * time.Minute }, }