Skip to content

Commit b666a27

Browse files
authored
Fix kernel restart (#142)
1 parent 18a0757 commit b666a27

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

jupyter_server_documents/kernels/kernel_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ async def stop_listening(self):
8080
"""
8181
# If the listening task isn't defined yet
8282
# do nothing.
83-
if not self._listening_task:
83+
if not hasattr(self, '_listening_task') or not self._listening_task:
8484
return
8585

8686
# Attempt to cancel the task.
@@ -93,6 +93,9 @@ async def stop_listening(self):
9393
# Log any exceptions that were raised.
9494
except Exception as err:
9595
self.log.error(err)
96+
finally:
97+
# Clear the task reference
98+
self._listening_task = None
9699

97100
_listening_task: t.Optional[t.Awaitable] = Any(allow_none=True)
98101

jupyter_server_documents/kernels/kernel_manager.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,9 @@ async def connect(self):
127127
await asyncio.sleep(0.1)
128128

129129
async def disconnect(self):
130-
await self.main_client.stop_listening()
131-
self.main_client.stop_channels()
130+
if self.main_client:
131+
await self.main_client.stop_listening()
132+
self.main_client.stop_channels()
132133

133134
async def broadcast_state(self):
134135
"""Broadcast state to all listeners"""

jupyter_server_documents/kernels/multi_kernel_manager.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,11 @@ def start_watching_activity(self, kernel_id):
77
pass
88

99
def stop_buffering(self, kernel_id):
10-
pass
10+
pass
11+
12+
# NOTE: Since we disable watching activity and buffering here,
13+
# this method needs to be forked and remove code related to these things.
14+
async def restart_kernel(self, kernel_id, now=False):
15+
"""Restart a kernel by kernel_id"""
16+
self._check_kernel_id(kernel_id)
17+
await self.pinned_superclass._async_restart_kernel(self, kernel_id, now=now)

0 commit comments

Comments
 (0)