Skip to content

Commit 11e0bc2

Browse files
committed
Retry deletion of instance
1 parent c6447d3 commit 11e0bc2

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

internal/pkg/instance/instance.go

+23-12
Original file line numberDiff line numberDiff line change
@@ -458,21 +458,32 @@ func UpdateTargetInstanceAfterPromotion(ctx context.Context, target *resolved.In
458458
func DeleteInstance(ctx context.Context, instanceName string, gcpProject *resolved.GcpProject, mgr *common_main.Manager) error {
459459
instancesService := mgr.SqlAdminService.Instances
460460

461-
mgr.Logger.Info("checking for instance existence before deletion", "name", instanceName)
462-
_, err := instancesService.Get(gcpProject.Id, instanceName).Context(ctx).Do()
463-
if err != nil {
464-
var ae *googleapi.Error
465-
if errors.As(err, &ae) && ae.Code == http.StatusNotFound {
466-
mgr.Logger.Info("instance not found, skipping deletion")
467-
return nil
461+
b := retry.NewConstant(10 * time.Second)
462+
b = retry.WithMaxDuration(5*time.Minute, b)
463+
464+
err := retry.Do(ctx, b, func(ctx context.Context) error {
465+
mgr.Logger.Info("checking for instance existence before deletion", "name", instanceName)
466+
_, err := instancesService.Get(gcpProject.Id, instanceName).Context(ctx).Do()
467+
if err != nil {
468+
var ae *googleapi.Error
469+
if errors.As(err, &ae) && ae.Code == http.StatusNotFound {
470+
mgr.Logger.Info("instance not found, skipping deletion")
471+
return nil
472+
}
473+
mgr.Logger.Warn("failed to get instance, retrying", "error", err)
474+
return retry.RetryableError(fmt.Errorf("failed to get instance: %w", err))
468475
}
469-
return fmt.Errorf("failed to get instance: %w", err)
470-
}
471476

472-
mgr.Logger.Info("deleting instance", "name", instanceName)
473-
_, err = instancesService.Delete(gcpProject.Id, instanceName).Context(ctx).Do()
477+
mgr.Logger.Info("deleting instance", "name", instanceName)
478+
_, err = instancesService.Delete(gcpProject.Id, instanceName).Context(ctx).Do()
479+
if err != nil {
480+
mgr.Logger.Warn("failed to delete instance, retrying", "error", err)
481+
return retry.RetryableError(fmt.Errorf("failed to delete instance: %w", err))
482+
}
483+
return nil
484+
})
474485
if err != nil {
475-
return fmt.Errorf("failed to delete instance: %w", err)
486+
return err
476487
}
477488
return nil
478489
}

0 commit comments

Comments
 (0)