From f4d2c246d52208932c9514af0a555aa90f44cac2 Mon Sep 17 00:00:00 2001 From: Min RK Date: Tue, 11 Apr 2017 17:43:15 +0200 Subject: [PATCH] use dedicated Session for activity monitor instead of re-using kernel.session, which can cause hash collisions if other objects use `kernel.session`. --- notebook/services/kernels/kernelmanager.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/notebook/services/kernels/kernelmanager.py b/notebook/services/kernels/kernelmanager.py index 292cb6239..e81148e10 100644 --- a/notebook/services/kernels/kernelmanager.py +++ b/notebook/services/kernels/kernelmanager.py @@ -13,6 +13,7 @@ from tornado import gen, web from tornado.concurrent import Future from tornado.ioloop import IOLoop, PeriodicCallback +from jupyter_client.session import Session from jupyter_client.multikernelmanager import MultiKernelManager from traitlets import Dict, List, Unicode, TraitError, Integer, default, validate @@ -234,13 +235,17 @@ class MappingKernelManager(MultiKernelManager): kernel.execution_state = 'starting' kernel.last_activity = utcnow() kernel._activity_stream = kernel.connect_iopub() + session = Session( + config=kernel.session.config, + key=kernel.session.key, + ) def record_activity(msg_list): """Record an IOPub message arriving from a kernel""" kernel.last_activity = utcnow() - idents, fed_msg_list = kernel.session.feed_identities(msg_list) - msg = kernel.session.deserialize(fed_msg_list) + idents, fed_msg_list = session.feed_identities(msg_list) + msg = session.deserialize(fed_msg_list) msg_type = msg['header']['msg_type'] self.log.debug("activity on %s: %s", kernel_id, msg_type) if msg_type == 'status':