diff options
Diffstat (limited to 'src/buildstream/_scheduler/jobs/job.py')
-rw-r--r-- | src/buildstream/_scheduler/jobs/job.py | 16 |
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) |