Fix panic if there are more terminating pods than active pods

Co-authored-by: Aldo Culquicondor <1299064+alculquicondor@users.noreply.github.com>
This commit is contained in:
Kevin Hannon 2023-10-05 11:26:06 -04:00
parent d22e315c4a
commit 7a1ac18bc8
2 changed files with 19 additions and 5 deletions

View File

@ -1490,7 +1490,7 @@ func (jm *Controller) manageJob(ctx context.Context, job *batch.Job, jobCtx *syn
}
}
rmAtLeast := active + terminating - wantActive
rmAtLeast := active - wantActive
if rmAtLeast < 0 {
rmAtLeast = 0
}

View File

@ -357,9 +357,10 @@ func TestControllerSyncJob(t *testing.T) {
jobPodReplacementPolicy: true,
terminatingPods: 1,
expectedTerminating: ptr.To[int32](1),
expectedPodPatches: 2,
expectedDeletions: 1,
expectedFailed: 1,
// Removes finalizer and deletes one failed pod
expectedPodPatches: 1,
expectedFailed: 1,
expectedActive: 1,
},
"WQ job: recreate pods when terminating or failed": {
parallelism: 1,
@ -375,7 +376,20 @@ func TestControllerSyncJob(t *testing.T) {
expectedPodPatches: 2,
expectedFailed: 2,
},
"more terminating pods than parallelism": {
parallelism: 1,
completions: 1,
backoffLimit: 6,
activePods: 2,
failedPods: 0,
terminatingPods: 4,
podReplacementPolicy: podReplacementPolicy(batch.Failed),
jobPodReplacementPolicy: true,
expectedTerminating: ptr.To[int32](4),
expectedActive: 1,
expectedDeletions: 1,
expectedPodPatches: 1,
},
"too few active pods and active back-off": {
parallelism: 1,
completions: 1,