From d5f80882bd693eb72383050ec9a777f45595138d Mon Sep 17 00:00:00 2001 From: Hendrik Dumith Louzada Date: Mon, 15 Jul 2024 15:58:40 -0300 Subject: [PATCH] fix: ignore errors on closing client and kernels --- spyder/plugins/remoteclient/plugin.py | 15 ++++++++++++--- spyder/plugins/remoteclient/widgets/container.py | 7 ++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/spyder/plugins/remoteclient/plugin.py b/spyder/plugins/remoteclient/plugin.py index 2a15ad70902..c7d42325e84 100644 --- a/spyder/plugins/remoteclient/plugin.py +++ b/spyder/plugins/remoteclient/plugin.py @@ -116,7 +116,10 @@ def on_first_registration(self): def on_close(self, cancellable=True): """Stops remote server and close any opened connection.""" for client in self._remote_clients.values(): - AsyncDispatcher(client.close, early_return=False)() + try: + AsyncDispatcher(client.close, early_return=False)() + except Exception: + pass @on_plugin_available(plugin=Plugins.MainMenu) def on_mainmenu_available(self): @@ -313,7 +316,10 @@ async def _shutdown_kernel(self, config_id, kernel_id): """Shutdown a running kernel.""" if config_id in self._remote_clients: client = self._remote_clients[config_id] - await client.terminate_kernel(kernel_id) + try: + await client.terminate_kernel(kernel_id) + except Exception: + pass @AsyncDispatcher.dispatch(loop='asyncssh') async def _start_new_kernel(self, config_id): @@ -329,7 +335,10 @@ async def _restart_kernel(self, config_id, kernel_id): """Restart kernel.""" if config_id in self._remote_clients: client = self._remote_clients[config_id] - return await client.restart_kernel(kernel_id) + try: + return await client.restart_kernel(kernel_id) + except Exception: + pass @AsyncDispatcher.dispatch(loop='asyncssh') async def _interrupt_kernel(self, config_id, kernel_id): diff --git a/spyder/plugins/remoteclient/widgets/container.py b/spyder/plugins/remoteclient/widgets/container.py index c91c0b5eadf..fef10747c1c 100644 --- a/spyder/plugins/remoteclient/widgets/container.py +++ b/spyder/plugins/remoteclient/widgets/container.py @@ -27,7 +27,7 @@ class RemoteClientContainer(PluginMainContainer): - _sig_kernel_restarted = Signal(object, bool) + _sig_kernel_restarted = Signal(object, object) """ This private signal is used to inform that a kernel restart took place in the server. @@ -37,8 +37,9 @@ class RemoteClientContainer(PluginMainContainer): ipyclient: ClientWidget An IPython console client widget (the first parameter in both signatures). - response: bool - Response returned by the server. + response: bool or None + Response returned by the server. `None` can happen when the connection + to the server is lost. """ sig_start_server_requested = Signal(str)