summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-10-03 20:52:26 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-10-03 21:06:46 +0900
commite80f435abe1655e7c9fa1e3ae5756d63d262cc35 (patch)
tree87a58f58f4d490c5f9e1506235f72db77285e8f8
parenta33fd160ab68e79e60c7a4981d102a63baea8f94 (diff)
downloadbuildstream-e80f435abe1655e7c9fa1e3ae5756d63d262cc35.tar.gz
_scheduler/scheduler.py: Ignore interrupt events while terminating.
For some reason, we now receive a SIGINT from the main loop even when the SIGINT occurred with the handler disconnected in an interactive prompt. This patch simply ignores any received SIGINT events from the main loop in the case that we are already in the process of terminating. This fixes issue #693
-rw-r--r--buildstream/_scheduler/scheduler.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/buildstream/_scheduler/scheduler.py b/buildstream/_scheduler/scheduler.py
index 09af63de5..2975f9758 100644
--- a/buildstream/_scheduler/scheduler.py
+++ b/buildstream/_scheduler/scheduler.py
@@ -387,6 +387,15 @@ class Scheduler():
# A loop registered event callback for keyboard interrupts
#
def _interrupt_event(self):
+
+ # FIXME: This should not be needed, but for some reason we receive an
+ # additional SIGINT event when the user hits ^C a second time
+ # to inform us that they really intend to terminate; even though
+ # we have disconnected our handlers at this time.
+ #
+ if self.terminated:
+ return
+
# Leave this to the frontend to decide, if no
# interrrupt callback was specified, then just terminate.
if self._interrupt_callback: