mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	delete a node from its cache if it gets node not found error
This commit is contained in:
		@@ -1109,6 +1109,21 @@ func (factory *configFactory) MakeDefaultErrorFunc(backoff *util.PodBackoff, pod
 | 
				
			|||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			if _, ok := err.(*core.FitError); ok {
 | 
								if _, ok := err.(*core.FitError); ok {
 | 
				
			||||||
				glog.V(4).Infof("Unable to schedule %v %v: no fit: %v; waiting", pod.Namespace, pod.Name, err)
 | 
									glog.V(4).Infof("Unable to schedule %v %v: no fit: %v; waiting", pod.Namespace, pod.Name, err)
 | 
				
			||||||
 | 
								} else if errors.IsNotFound(err) {
 | 
				
			||||||
 | 
									if errStatus, ok := err.(errors.APIStatus); ok && errStatus.Status().Details.Kind == "node" {
 | 
				
			||||||
 | 
										nodeName := errStatus.Status().Details.Name
 | 
				
			||||||
 | 
										// when node is not found, We do not remove the node right away. Trying again to get
 | 
				
			||||||
 | 
										// the node and if the node is still not found, then remove it from the scheduler cache.
 | 
				
			||||||
 | 
										_, err := factory.client.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
 | 
				
			||||||
 | 
										if err != nil && errors.IsNotFound(err) {
 | 
				
			||||||
 | 
											node := v1.Node{ObjectMeta: metav1.ObjectMeta{Name: nodeName}}
 | 
				
			||||||
 | 
											factory.schedulerCache.RemoveNode(&node)
 | 
				
			||||||
 | 
											// invalidate cached predicate for the node
 | 
				
			||||||
 | 
											if factory.enableEquivalenceClassCache {
 | 
				
			||||||
 | 
												factory.equivalencePodCache.InvalidateAllCachedPredicateItemOfNode(nodeName)
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				glog.Errorf("Error scheduling %v %v: %v; retrying", pod.Namespace, pod.Name, err)
 | 
									glog.Errorf("Error scheduling %v %v: %v; retrying", pod.Namespace, pod.Name, err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user