Skip to content

Commit 930d14a

Browse files
authored
Fix sigint handler for StopOnExitJobServer (#34748)
1 parent 82540a8 commit 930d14a

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

sdks/python/apache_beam/runners/portability/job_server.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,22 @@ def __init__(self, job_server):
7272
self._lock = threading.Lock()
7373
self._job_server = job_server
7474
self._started = False
75+
# save original signal handler
76+
self._original_sigint_handler = signal.getsignal(signal.SIGINT)
77+
78+
def _sigint_handler(self, sig, frame):
79+
self.stop()
80+
if callable(self._original_sigint_handler):
81+
# call original signal handler to handle sigint gracefully
82+
self._original_sigint_handler(sig, frame)
7583

7684
def start(self):
7785
with self._lock:
7886
if not self._started:
7987
self._endpoint = self._job_server.start()
8088
self._started = True
8189
atexit.register(self.stop)
82-
signal.signal(signal.SIGINT, self.stop)
90+
signal.signal(signal.SIGINT, self._sigint_handler)
8391
return self._endpoint
8492

8593
def stop(self):

0 commit comments

Comments
 (0)