[bugfix] Fix Slurm job array completion detection - #3707
Conversation
Signed-off-by: Pengfei Ding <9438483+dingp@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR fixes ReFrame’s Slurm job-array completion detection when Slurm reports compact array element IDs (including lists/ranges/steps and percent throttles). It ensures a job array is not treated as complete (and its outputs merged) until the scheduler snapshot accounts for all tasks requested via --array.
Changes:
- Extend Slurm job-id matching to recognize compact array element expressions (e.g.,
123_[1,3-7:2%2]). - Track the requested array task count from the
--arrayoption and keep arrays nonterminal when fewer tasks are observed in scheduler snapshots. - Add unit tests covering array task counting, job-id pattern matching, and polling behavior with incomplete/compact
sacctoutputs.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
reframe/core/schedulers/slurm.py |
Adds array-expression task counting, broadens Slurm array job-id pattern matching, and prevents premature completion when fewer tasks are observed than requested. |
unittests/test_schedulers.py |
Adds regression tests for array task counting, compact job-id patterns, and polling behavior with incomplete/compact sacct responses. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #3707 +/- ##
===========================================
- Coverage 91.97% 91.94% -0.03%
===========================================
Files 62 62
Lines 13788 13825 +37
===========================================
+ Hits 12681 12712 +31
- Misses 1107 1113 +6 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@dingp Thanks for the PR. Can you elaborate a bit on the problem with some more examples and the scenarios that the current implementation fails? A minimal reproducer test submitting a job array would be rather helpful in order to understand and evaluate better the fix. |
The Slurm backend is crucial for most of the users, so we need to have a clear understanding of what exactly this PR fixes in order to avoid breaking the backend. |
Summary
Background
Slurm can report a pending throttled array element as 56502501_[1%1]|PENDING. The previous job-ID pattern did not match that form. If sacct simultaneously reported an earlier element as completed, ReFrame could treat the array as complete and merge output before the remaining element ran.
Testing