mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #37813 from kubernetes/revert-36625-branch-eliminate-recursive-call-attemptToUpdateMasterRoleLabelsAndTaints
Automatic merge from submit-queue (batch tested with PRs 35300, 36709, 37643, 37813, 37697) Revert "[kubeadm] use iteration instead of recursion in function" Reverts kubernetes/kubernetes#36625 Removing the recursive call means that `n` is never updated, so you never succeed in the update, and you've creating an infinite loop. Also, this entire bit of functionality should be a patch and you won't have to worry about conflicts. @luxas
This commit is contained in:
		@@ -178,22 +178,21 @@ func attemptToUpdateMasterRoleLabelsAndTaints(client *clientset.Clientset, sched
 | 
				
			|||||||
		n.ObjectMeta.Annotations[v1.TaintsAnnotationKey] = string(taintsAnnotation)
 | 
							n.ObjectMeta.Annotations[v1.TaintsAnnotationKey] = string(taintsAnnotation)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for {
 | 
					 | 
				
			||||||
	if _, err := client.Nodes().Update(n); err != nil {
 | 
						if _, err := client.Nodes().Update(n); err != nil {
 | 
				
			||||||
		if apierrs.IsConflict(err) {
 | 
							if apierrs.IsConflict(err) {
 | 
				
			||||||
			fmt.Println("<master/apiclient> temporarily unable to update master node metadata due to conflict (will retry)")
 | 
								fmt.Println("<master/apiclient> temporarily unable to update master node metadata due to conflict (will retry)")
 | 
				
			||||||
			time.Sleep(apiCallRetryInterval)
 | 
								time.Sleep(apiCallRetryInterval)
 | 
				
			||||||
 | 
								attemptToUpdateMasterRoleLabelsAndTaints(client, schedulable)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			return nil
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func UpdateMasterRoleLabelsAndTaints(client *clientset.Clientset, schedulable bool) error {
 | 
					func UpdateMasterRoleLabelsAndTaints(client *clientset.Clientset, schedulable bool) error {
 | 
				
			||||||
 | 
						// TODO(phase1+) use iterate instead of recursion
 | 
				
			||||||
	err := attemptToUpdateMasterRoleLabelsAndTaints(client, schedulable)
 | 
						err := attemptToUpdateMasterRoleLabelsAndTaints(client, schedulable)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("<master/apiclient> failed to update master node - %v", err)
 | 
							return fmt.Errorf("<master/apiclient> failed to update master node - %v", err)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user