Use the Defer for pod replacement policy
This commit is contained in:
@@ -1921,7 +1921,7 @@ func (jm *Controller) cleanupPodFinalizers(job *batch.Job) {
|
|||||||
func recordJobPodsCreationTotal(job *batch.Job, jobCtx *syncJobCtx, succeeded, failed int32) {
|
func recordJobPodsCreationTotal(job *batch.Job, jobCtx *syncJobCtx, succeeded, failed int32) {
|
||||||
reason := metrics.PodCreateNew
|
reason := metrics.PodCreateNew
|
||||||
if feature.DefaultFeatureGate.Enabled(features.JobPodReplacementPolicy) {
|
if feature.DefaultFeatureGate.Enabled(features.JobPodReplacementPolicy) {
|
||||||
if *job.Spec.PodReplacementPolicy == batch.Failed && jobCtx.failed > 0 {
|
if ptr.Deref(job.Spec.PodReplacementPolicy, batch.TerminatingOrFailed) == batch.Failed && jobCtx.failed > 0 {
|
||||||
reason = metrics.PodRecreateFailed
|
reason = metrics.PodRecreateFailed
|
||||||
} else if jobCtx.failed > 0 || ptr.Deref(jobCtx.terminating, 0) > 0 {
|
} else if jobCtx.failed > 0 || ptr.Deref(jobCtx.terminating, 0) > 0 {
|
||||||
reason = metrics.PodRecreateTerminatingOrFailed
|
reason = metrics.PodRecreateTerminatingOrFailed
|
||||||
|
@@ -115,7 +115,7 @@ func newJobWithName(name string, parallelism, completions, backoffLimit int32, c
|
|||||||
j.Spec.Parallelism = nil
|
j.Spec.Parallelism = nil
|
||||||
}
|
}
|
||||||
j.Spec.BackoffLimit = &backoffLimit
|
j.Spec.BackoffLimit = &backoffLimit
|
||||||
defaultPodReplacementPolicy(j)
|
|
||||||
return j
|
return j
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3880,7 +3880,6 @@ func TestSyncJobWithJobBackoffLimitPerIndex(t *testing.T) {
|
|||||||
manager.podStoreSynced = alwaysReady
|
manager.podStoreSynced = alwaysReady
|
||||||
manager.jobStoreSynced = alwaysReady
|
manager.jobStoreSynced = alwaysReady
|
||||||
job := &tc.job
|
job := &tc.job
|
||||||
defaultPodReplacementPolicy(job)
|
|
||||||
|
|
||||||
actual := job
|
actual := job
|
||||||
manager.updateStatusHandler = func(ctx context.Context, job *batch.Job) (*batch.Job, error) {
|
manager.updateStatusHandler = func(ctx context.Context, job *batch.Job) (*batch.Job, error) {
|
||||||
@@ -5532,11 +5531,3 @@ func setDurationDuringTest(val *time.Duration, newVal time.Duration) func() {
|
|||||||
*val = origVal
|
*val = origVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to simulate defaulting of the PodReplacementPolicy field in unit tests
|
|
||||||
// as the job controller code assumes it is set by the kube-apiserver.
|
|
||||||
func defaultPodReplacementPolicy(job *batch.Job) {
|
|
||||||
if feature.DefaultFeatureGate.Enabled(features.JobPodReplacementPolicy) && job.Spec.PodReplacementPolicy == nil {
|
|
||||||
job.Spec.PodReplacementPolicy = ptr.To(batch.TerminatingOrFailed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user