@@ -458,21 +458,32 @@ func UpdateTargetInstanceAfterPromotion(ctx context.Context, target *resolved.In
458
458
func DeleteInstance (ctx context.Context , instanceName string , gcpProject * resolved.GcpProject , mgr * common_main.Manager ) error {
459
459
instancesService := mgr .SqlAdminService .Instances
460
460
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 ))
468
475
}
469
- return fmt .Errorf ("failed to get instance: %w" , err )
470
- }
471
476
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
+ })
474
485
if err != nil {
475
- return fmt . Errorf ( "failed to delete instance: %w" , err )
486
+ return err
476
487
}
477
488
return nil
478
489
}
0 commit comments