@@ -28,7 +28,6 @@ import (
28
28
29
29
const (
30
30
dummyAppImage = "europe-north1-docker.pkg.dev/nais-io/nais/images/kafka-debug:latest"
31
- updateRetries = 3
32
31
migrationAuthNetworkPrefix = "migrator:"
33
32
)
34
33
@@ -291,8 +290,32 @@ func PrepareTargetInstance(ctx context.Context, target *resolved.Instance, mgr *
291
290
}
292
291
293
292
func UpdateTargetInstanceAfterPromotion (ctx context.Context , target * resolved.Instance , mgr * common_main.Manager ) error {
294
- err := updateTargetInstanceAfterPromotionWithRetries (ctx , target , mgr , updateRetries )
293
+ mgr .Logger .Info ("updating target instance after promotion" )
294
+
295
+ b := retry .NewConstant (1 * time .Second )
296
+ b = retry .WithMaxDuration (5 * time .Minute , b )
297
+
298
+ err := retry .Do (ctx , b , func (ctx context.Context ) error {
299
+ targetSqlInstance , err := mgr .SqlInstanceClient .Get (ctx , target .Name )
300
+ if err != nil {
301
+ return fmt .Errorf ("failed to get target instance: %w" , err )
302
+ }
303
+
304
+ targetSqlInstance .Spec .InstanceType = ptr .To ("CLOUD_SQL_INSTANCE" )
305
+ targetSqlInstance .Spec .MasterInstanceRef = nil
306
+
307
+ _ , err = mgr .SqlInstanceClient .Update (ctx , targetSqlInstance )
308
+ if err != nil {
309
+ if k8s_errors .IsConflict (err ) {
310
+ mgr .Logger .Warn ("retrying update of target instance" , "error" , err )
311
+ return retry .RetryableError (err )
312
+ }
313
+ return err
314
+ }
315
+ return nil
316
+ })
295
317
if err != nil {
318
+ mgr .Logger .Error ("failed to update target instance after promotion" , "error" , err )
296
319
return err
297
320
}
298
321
@@ -315,26 +338,6 @@ func UpdateTargetInstanceAfterPromotion(ctx context.Context, target *resolved.In
315
338
return nil
316
339
}
317
340
318
- func updateTargetInstanceAfterPromotionWithRetries (ctx context.Context , target * resolved.Instance , mgr * common_main.Manager , retries int ) error {
319
- targetSqlInstance , err := mgr .SqlInstanceClient .Get (ctx , target .Name )
320
- if err != nil {
321
- return fmt .Errorf ("failed to get target instance: %w" , err )
322
- }
323
-
324
- targetSqlInstance .Spec .InstanceType = ptr .To ("CLOUD_SQL_INSTANCE" )
325
- targetSqlInstance .Spec .MasterInstanceRef = nil
326
-
327
- _ , err = mgr .SqlInstanceClient .Update (ctx , targetSqlInstance )
328
- if err != nil {
329
- if k8s_errors .IsConflict (err ) && retries > 0 {
330
- mgr .Logger .Info ("retrying update of target instance" , "remaining_retries" , retries )
331
- return updateTargetInstanceAfterPromotionWithRetries (ctx , target , mgr , retries - 1 )
332
- }
333
- return err
334
- }
335
- return nil
336
- }
337
-
338
341
func DeleteInstance (ctx context.Context , instanceName string , gcpProject * resolved.GcpProject , mgr * common_main.Manager ) error {
339
342
instancesService := mgr .SqlAdminService .Instances
340
343
0 commit comments