From 68602fa116945aead8b3d0776fcbcca1f4df49b5 Mon Sep 17 00:00:00 2001 From: Min RK Date: Wed, 4 Oct 2017 09:55:24 +0200 Subject: [PATCH] hookup restart callbacks in open instead of in `create_stream`, which is not called on reconnect --- notebook/services/kernels/handlers.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/notebook/services/kernels/handlers.py b/notebook/services/kernels/handlers.py index 006047e27c..9477bdeb93 100644 --- a/notebook/services/kernels/handlers.py +++ b/notebook/services/kernels/handlers.py @@ -128,8 +128,6 @@ def create_stream(self): meth = getattr(km, 'connect_' + channel) self.channels[channel] = stream = meth(self.kernel_id, identity=identity) stream.channel = channel - km.add_restart_callback(self.kernel_id, self.on_kernel_restarted) - km.add_restart_callback(self.kernel_id, self.on_restart_failed, 'dead') def request_kernel_info(self): """send a request for kernel_info""" @@ -258,10 +256,11 @@ def _register_session(self): def open(self, kernel_id): super(ZMQChannelsHandler, self).open() - self.kernel_manager.notify_connect(kernel_id) + km = self.kernel_manager + km.notify_connect(kernel_id) # on new connections, flush the message buffer - buffer_info = self.kernel_manager.get_buffer(kernel_id, self.session_key) + buffer_info = km.get_buffer(kernel_id, self.session_key) if buffer_info and buffer_info['session_key'] == self.session_key: self.log.info("Restoring connection for %s", self.session_key) self.channels = buffer_info['channels'] @@ -284,6 +283,9 @@ def open(self, kernel_id): self.close() return + km.add_restart_callback(self.kernel_id, self.on_kernel_restarted) + km.add_restart_callback(self.kernel_id, self.on_restart_failed, 'dead') + for channel, stream in self.channels.items(): stream.on_recv_stream(self._on_zmq_reply)