Skip to content

Commit

Permalink
Merge pull request #2934 from vkarak/enhancement/time_limit_message
Browse files Browse the repository at this point in the history
[enhancement] Raise job timeout error in local scheduler when `time_limit` is reached
  • Loading branch information
vkarak committed Jun 22, 2023
2 parents 23ca09c + 6e93c42 commit 5c4e497
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
7 changes: 5 additions & 2 deletions reframe/core/schedulers/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import reframe.core.schedulers as sched
import reframe.utility.osext as osext
from reframe.core.backends import register_scheduler
from reframe.core.exceptions import ReframeError
from reframe.core.exceptions import JobError, ReframeError


class _TimeoutExpired(ReframeError):
Expand Down Expand Up @@ -187,9 +187,12 @@ def _poll_job(self, job):
# Job has not finished; check if we have reached a timeout
t_elapsed = time.time() - job.submit_time
if job.time_limit and t_elapsed > job.time_limit:
self.log(f'Job {job.jobid} timed out; kill it')
self._kill_all(job)
job._state = 'TIMEOUT'
job._exception = JobError(
f'job timed out ({t_elapsed:.6f}s > {job.time_limit}s)',
job.jobid
)

return

Expand Down
4 changes: 3 additions & 1 deletion unittests/test_schedulers.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,9 @@ def test_submit_timelimit(minimal_job, local_only):
t_job = time.time()
submit_job(minimal_job)
assert minimal_job.jobid is not None
minimal_job.wait()
with pytest.raises(JobError):
minimal_job.wait()

t_job = time.time() - t_job
assert t_job >= 2
assert t_job < 3
Expand Down

0 comments on commit 5c4e497

Please sign in to comment.