mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-10 04:27:54 +00:00
Added function to remove finalizers as backup
This commit is contained in:
parent
10c622e99a
commit
297f04b74a
@ -467,7 +467,11 @@ func (jm *Controller) updateJob(logger klog.Logger, old, cur interface{}) {
|
||||
} else {
|
||||
// Trigger immediate sync when spec is changed.
|
||||
jm.enqueueSyncJobImmediately(logger, curJob)
|
||||
}
|
||||
|
||||
// if curJob is finished, remove the finalizer as a backup check.
|
||||
if curJob.Status.CompletionTime != nil {
|
||||
jm.backupRemovePodFinalizers(curJob)
|
||||
}
|
||||
|
||||
// check if need to add a new rsync for ActiveDeadlineSeconds
|
||||
@ -504,18 +508,7 @@ func (jm *Controller) deleteJob(logger klog.Logger, obj interface{}) {
|
||||
return
|
||||
}
|
||||
}
|
||||
// Listing pods shouldn't really fail, as we are just querying the informer cache.
|
||||
selector, err := metav1.LabelSelectorAsSelector(jobObj.Spec.Selector)
|
||||
if err != nil {
|
||||
utilruntime.HandleError(fmt.Errorf("parsing deleted job selector: %v", err))
|
||||
return
|
||||
}
|
||||
pods, _ := jm.podStore.Pods(jobObj.Namespace).List(selector)
|
||||
for _, pod := range pods {
|
||||
if metav1.IsControlledBy(pod, jobObj) && hasJobTrackingFinalizer(pod) {
|
||||
jm.enqueueOrphanPod(pod)
|
||||
}
|
||||
}
|
||||
jm.backupRemovePodFinalizers(jobObj)
|
||||
}
|
||||
|
||||
// enqueueSyncJobImmediately tells the Job controller to invoke syncJob
|
||||
@ -1879,3 +1872,22 @@ func onlyReplaceFailedPods(job *batch.Job) bool {
|
||||
}
|
||||
return feature.DefaultFeatureGate.Enabled(features.JobPodFailurePolicy) && job.Spec.PodFailurePolicy != nil
|
||||
}
|
||||
|
||||
func (jm *Controller) backupRemovePodFinalizers(obj interface{}) {
|
||||
jobObj, ok := obj.(*batch.Job)
|
||||
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
selector, err := metav1.LabelSelectorAsSelector(jobObj.Spec.Selector)
|
||||
if err != nil {
|
||||
utilruntime.HandleError(fmt.Errorf("parsing deleted job selector: %v", err))
|
||||
return
|
||||
}
|
||||
pods, _ := jm.podStore.Pods(jobObj.Namespace).List(selector)
|
||||
for _, pod := range pods {
|
||||
if metav1.IsControlledBy(pod, jobObj) && hasJobTrackingFinalizer(pod) {
|
||||
jm.enqueueOrphanPod(pod)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user