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.van.berkom@gmail.com>2018-10-03 13:05:52 +0000
commita08143999be80a85875c9ea01380e573a9a787f4 (patch)
tree4e6c22f5ef58453612ed1005d1b66107d4d5e10f
parente49698076529da604ecdadb91c10d9d4a2a2a736 (diff)
downloadbuildstream-a08143999be80a85875c9ea01380e573a9a787f4.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 090d490ba..b76c7308e 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: