summaryrefslogtreecommitdiff
path: root/src/buildstream/_scheduler/jobs/job.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildstream/_scheduler/jobs/job.py')
-rw-r--r--src/buildstream/_scheduler/jobs/job.py16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/buildstream/_scheduler/jobs/job.py b/src/buildstream/_scheduler/jobs/job.py
index b4060910b..823404b59 100644
--- a/src/buildstream/_scheduler/jobs/job.py
+++ b/src/buildstream/_scheduler/jobs/job.py
@@ -688,17 +688,15 @@ class ChildJob:
nonlocal starttime
starttime += datetime.datetime.now() - stopped_time
+ # Graciously handle sigterms.
+ def handle_sigterm():
+ self._child_shutdown(_ReturnCode.TERMINATED)
+
# Time, log and and run the action function
#
- with _signals.suspendable(stop_time, resume_time), self._messenger.recorded_messages(
- self._logfile, self._logdir
- ) as filename:
-
- # Graciously handle sigterms.
- def handle_sigterm(_signum, _sigframe):
- self._child_shutdown(_ReturnCode.TERMINATED)
-
- signal.signal(signal.SIGTERM, handle_sigterm)
+ with _signals.terminator(handle_sigterm), _signals.suspendable(
+ stop_time, resume_time
+ ), self._messenger.recorded_messages(self._logfile, self._logdir) as filename:
self.message(MessageType.START, self.action_name, logfile=filename)