Skip to content

Commit 04729cc

Browse files
authored
Merge pull request #5742 from grondo/issue#5734
do not drain ranks when job is canceled during prolog
2 parents 35c2c10 + 9d20065 commit 04729cc

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/cmd/flux-perilog-run.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,14 @@ async def run_per_rank(name, jobid, args):
175175
if proc.canceled:
176176
timeout_ids.set(rank)
177177
rc = 128 + signal.SIGTERM
178-
elif rc != 0:
178+
elif rc > 0 and rc <= 128:
179+
# process failed with non-zero exit code. Add this rank to
180+
# the failed set which will be drained.
179181
fail_ids.set(rank)
182+
else:
183+
# process was signaled (returncode < 0) or shell reported it
184+
# was signaled (128+n). Do nothing in this case.
185+
pass
180186
if rc > returncode:
181187
returncode = rc
182188

t/t2274-manager-perilog.t

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,20 @@ test_expect_success 'perilog: epilog can be specified without a prolog' '
282282
flux job wait-event -t 15 $jobid epilog-start &&
283283
flux job wait-event -t 15 $jobid epilog-finish
284284
'
285+
test_expect_success 'perilog: canceled prolog does not drain ranks' '
286+
cat <<-EOF >config/perilog.toml &&
287+
[job-manager.prolog]
288+
command = [ "flux", "perilog-run", "prolog", "-vesleep,30" ]
289+
EOF
290+
flux config reload &&
291+
flux jobtap load --remove=*.so perilog.so &&
292+
jobid=$(flux submit hostname) &&
293+
flux job wait-event -t 15 $jobid prolog-start &&
294+
flux cancel $jobid &&
295+
flux job wait-event -vt 15 $jobid prolog-finish &&
296+
flux resource drain &&
297+
test "$(drained_ranks)" = ""
298+
'
285299
# Note: run this job before taking rank 3 offline below
286300
test_expect_success 'perilog: run job across all 4 ranks' '
287301
jobid=$(flux submit --wait-event=clean -N4 -n4 true)

0 commit comments

Comments
 (0)