From b6dcf8a31c96780200fe2e4826281ec730267a70 Mon Sep 17 00:00:00 2001 From: Johannes Otepka Date: Thu, 4 Jul 2024 15:31:45 +0200 Subject: [PATCH] on_stop handler for closing ssh_sender object added --- ipyparallel/cluster/launcher.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ipyparallel/cluster/launcher.py b/ipyparallel/cluster/launcher.py index 922570d5..9fe7b563 100644 --- a/ipyparallel/cluster/launcher.py +++ b/ipyparallel/cluster/launcher.py @@ -1208,6 +1208,13 @@ def ssh_sender(self): ) return self._ssh_sender + def _ssh_sender_stopped(self, data): + if self._ssh_sender: + self.log.info("Closing SSHLauncher::ssh_sender object") + self.ssh_sender.close() + else: + self.log.warning("SSHLauncher::ssh_sender was never initialized") + def _reconstruct_process(self, d): # called in from_dict # override from LocalProcessLauncher which invokes psutil.Process @@ -1312,6 +1319,7 @@ def start(self, hostname=None, user=None, port=None): self.log.info( f"ssh sender object initiated (break_away_support={self.ssh_sender.breakaway_support})" ) + self.on_stop(self._ssh_sender_stopped) # create remote profile dir self.ssh_sender.check_output_python_module( @@ -1325,7 +1333,7 @@ def start(self, hostname=None, user=None, port=None): ) if self.log: remote_cmd = ' '.join(self.program + self.program_args) - self.log.info(f"Running `{remote_cmd}`") + self.log.info(f"Running `{remote_cmd}` (pid={self.pid})") # self.log.debug("Running script via ssh:\n%s", input_script) pass self.notify_start({'host': self.location, 'pid': self.pid})