Skip to content

Commit abb32f8

Browse files
committed
Fix bug when other jupyter server running
It is possible to receive ZMQ messages from the kernel before the kernel gateway is ready to receive them. This leads to a KeyError in pool.py To mitigate this we check if the kernel id is in the list of available callbacks and return early if not. Fixes #277 and fixes #288
1 parent 333b029 commit abb32f8

File tree

1 file changed

+6
-1
lines changed
  • kernel_gateway/services/kernels

1 file changed

+6
-1
lines changed

kernel_gateway/services/kernels/pool.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66

77
from tornado.locks import Semaphore
88
from tornado import gen
9+
from traitlets.config.configurable import LoggingConfigurable
910

1011

11-
class KernelPool(object):
12+
class KernelPool(LoggingConfigurable):
1213
"""Spawns a pool of kernels.
1314
1415
The kernel pool is responsible for clean up and shutdown of individual
@@ -119,6 +120,10 @@ def _on_reply(self, kernel_id, session, msg_list):
119120
msg_list : list
120121
List of 0mq messages
121122
"""
123+
if not kernel_id in self.on_recv_funcs:
124+
self.log.warning(
125+
"Could not find callback for kernel_id: {}".format(kernel_id))
126+
return
122127
idents, msg_list = session.feed_identities(msg_list)
123128
msg = session.deserialize(msg_list)
124129
self.on_recv_funcs[kernel_id](msg)

0 commit comments

Comments
 (0)