@@ -232,12 +232,42 @@ func WaitForCnrmResourcesToGoAway(ctx context.Context, name string, mgr *common_
232
232
return g .Wait ()
233
233
}
234
234
235
- func PrepareTargetInstance (ctx context.Context , cfg * config.Config , target * resolved.Instance , mgr * common_main.Manager ) error {
236
- getInstanceCtx , cancel := context .WithTimeout (ctx , 15 * time .Minute )
237
- defer cancel ()
235
+ func PrepareTargetInstance (ctx context.Context , target * resolved.Instance , mgr * common_main.Manager ) error {
236
+ mgr .Logger .Info ("preparing target instance for migration" )
237
+
238
+ b := retry .NewConstant (1 * time .Second )
239
+ b = retry .WithMaxDuration (15 * time .Minute , b )
238
240
239
- err := prepareTargetInstanceWithRetries (getInstanceCtx , cfg , target , mgr , updateRetries )
241
+ err := retry .Do (ctx , b , func (ctx context.Context ) error {
242
+ targetSqlInstance , err := mgr .SqlInstanceClient .Get (ctx , target .Name )
243
+ if err != nil {
244
+ // Target is assumed to exist, so any error here is fatal
245
+ return err
246
+ }
247
+
248
+ targetSqlInstance .Spec .Settings .BackupConfiguration .Enabled = ptr .To (false )
249
+
250
+ var authNetwork v1beta1.InstanceAuthorizedNetworks
251
+ authNetwork , err = createMigratorAuthNetwork ()
252
+ if err != nil {
253
+ return err
254
+ }
255
+
256
+ targetSqlInstance .Spec .Settings .IpConfiguration .AuthorizedNetworks = appendAuthNetIfNotExists (targetSqlInstance , authNetwork )
257
+
258
+ mgr .Logger .Info ("updating target instance" , "name" , target .Name )
259
+ _ , err = mgr .SqlInstanceClient .Update (ctx , targetSqlInstance )
260
+ if err != nil {
261
+ if k8s_errors .IsConflict (err ) {
262
+ mgr .Logger .Warn ("retrying update of target instance" , "error" , err )
263
+ return retry .RetryableError (err )
264
+ }
265
+ return err
266
+ }
267
+ return nil
268
+ })
240
269
if err != nil {
270
+ mgr .Logger .Error ("failed to prepare target instance" , "error" , err )
241
271
return err
242
272
}
243
273
@@ -260,38 +290,6 @@ func PrepareTargetInstance(ctx context.Context, cfg *config.Config, target *reso
260
290
return nil
261
291
}
262
292
263
- func prepareTargetInstanceWithRetries (ctx context.Context , cfg * config.Config , target * resolved.Instance , mgr * common_main.Manager , retries int ) error {
264
- mgr .Logger .Info ("preparing target instance for migration" )
265
-
266
- targetSqlInstance , err := mgr .SqlInstanceClient .Get (ctx , target .Name )
267
- if err != nil {
268
- if ! k8s_errors .IsNotFound (err ) {
269
- return err
270
- }
271
- }
272
-
273
- targetSqlInstance .Spec .Settings .BackupConfiguration .Enabled = ptr .To (false )
274
-
275
- var authNetwork v1beta1.InstanceAuthorizedNetworks
276
- authNetwork , err = createMigratorAuthNetwork ()
277
- if err != nil {
278
- return err
279
- }
280
-
281
- targetSqlInstance .Spec .Settings .IpConfiguration .AuthorizedNetworks = appendAuthNetIfNotExists (targetSqlInstance , authNetwork )
282
-
283
- mgr .Logger .Info ("updating target instance" , "name" , target .Name )
284
- _ , err = mgr .SqlInstanceClient .Update (ctx , targetSqlInstance )
285
- if err != nil {
286
- if k8s_errors .IsConflict (err ) && retries > 0 {
287
- mgr .Logger .Info ("retrying update of target instance" , "remaining_retries" , retries )
288
- return prepareTargetInstanceWithRetries (ctx , cfg , target , mgr , retries - 1 )
289
- }
290
- return err
291
- }
292
- return nil
293
- }
294
-
295
293
func UpdateTargetInstanceAfterPromotion (ctx context.Context , target * resolved.Instance , mgr * common_main.Manager ) error {
296
294
err := updateTargetInstanceAfterPromotionWithRetries (ctx , target , mgr , updateRetries )
297
295
if err != nil {
0 commit comments