Skip to content

Commit

Permalink
delay reconciliation of during restore (#438)
Browse files Browse the repository at this point in the history
  • Loading branch information
MartinWeindel authored Feb 11, 2025
1 parent 9b6a57b commit 9bd35ac
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions pkg/controller/replication/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,26 @@ func newReconciler(name string, mgr manager.Manager, controllerConfig config.DNS
func (r *reconciler) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) {
result := reconcile.Result{}

ext, err := r.findExtension(ctx, req.Namespace)
if err != nil {
return result, err
}
if ext == nil || common.IsMigrating(ext) {
return result, nil
}
if common.IsPreparingRestore(ext) || common.IsRestoring(ext) {
return reconcile.Result{Requeue: true, RequeueAfter: 10 * time.Second}, nil
}

// ensure that only one DNSEntry is reconciled per extension (shoot) to avoid parallel conflicting updates
if !r.lock.TryLock(req.Namespace) {
r.Env.Info("delaying as namespace already locked", "namespace", req.Namespace, "entry", req.Name)
result.Requeue = true
result.RequeueAfter = wait.Jitter(1*time.Second, 0)
result.RequeueAfter = wait.Jitter(2*time.Second, 0.1)
return result, nil
}
defer r.lock.Unlock(req.Namespace)

ext, err := r.findExtension(ctx, req.Namespace)
if err != nil {
return result, err
}
if ext == nil || common.IsMigrating(ext) {
return result, nil
}
statehandler, err := common.NewStateHandler(ctx, r.Env, ext, false)
if err != nil {
return result, err
Expand Down

0 comments on commit 9bd35ac

Please sign in to comment.