diff --git a/cmd/kubeadm/app/master/apiclient.go b/cmd/kubeadm/app/master/apiclient.go index 8966f33c1dd..447f20fe001 100644 --- a/cmd/kubeadm/app/master/apiclient.go +++ b/cmd/kubeadm/app/master/apiclient.go @@ -178,21 +178,22 @@ func attemptToUpdateMasterRoleLabelsAndTaints(client *clientset.Clientset, sched n.ObjectMeta.Annotations[v1.TaintsAnnotationKey] = string(taintsAnnotation) } - if _, err := client.Nodes().Update(n); err != nil { - if apierrs.IsConflict(err) { - fmt.Println(" temporarily unable to update master node metadata due to conflict (will retry)") - time.Sleep(apiCallRetryInterval) - attemptToUpdateMasterRoleLabelsAndTaints(client, schedulable) + for { + if _, err := client.Nodes().Update(n); err != nil { + if apierrs.IsConflict(err) { + fmt.Println(" temporarily unable to update master node metadata due to conflict (will retry)") + time.Sleep(apiCallRetryInterval) + } else { + return err + } } else { - return err + return nil } } - return nil } func UpdateMasterRoleLabelsAndTaints(client *clientset.Clientset, schedulable bool) error { - // TODO(phase1+) use iterate instead of recursion err := attemptToUpdateMasterRoleLabelsAndTaints(client, schedulable) if err != nil { return fmt.Errorf(" failed to update master node - %v", err)