From 479902d83a691253e0cff8439a33577e82408317 Mon Sep 17 00:00:00 2001 From: Vishwajeet <33215443+Vishwajeet0510@users.noreply.github.com> Date: Wed, 26 Jan 2022 00:06:38 +0530 Subject: [PATCH 1/5] Fix to add session only after kernel validation (#6251) --- notebook/services/kernels/handlers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/notebook/services/kernels/handlers.py b/notebook/services/kernels/handlers.py index 2b7f89b6f8..6040de1d48 100644 --- a/notebook/services/kernels/handlers.py +++ b/notebook/services/kernels/handlers.py @@ -371,7 +371,8 @@ def _register_session(self): if stale_handler: self.log.warning("Replacing stale connection: %s", self.session_key) yield stale_handler.close() - self._open_sessions[self.session_key] = self + if self.kernel_id in self.kernel_manager: # only update open sessions if kernel is actively managed + self._open_sessions[self.session_key] = self def open(self, kernel_id): super().open() From 126ceb3d1d33a99f52aef93d781aaf78467fe5bd Mon Sep 17 00:00:00 2001 From: Kevin Bates Date: Tue, 25 Jan 2022 11:19:43 -0800 Subject: [PATCH 2/5] Automated Changelog Entry for 6.4.8 on master (#6280) Co-authored-by: GitHub Action <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20a072eecb..e0fef4f52f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,22 @@ Use `pip install pip --upgrade` to upgrade pip. Check pip version with +## 6.4.8 + +([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.7...479902d83a691253e0cff8439a33577e82408317)) + +### Bugs fixed + +- Fix to remove potential memory leak on Jupyter Notebooks ZMQChannelHandler code [#6251](https://github.com/jupyter/notebook/pull/6251) ([@Vishwajeet0510](https://github.com/Vishwajeet0510)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2022-01-12&to=2022-01-25&type=c)) + +[@Vishwajeet0510](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AVishwajeet0510+updated%3A2022-01-12..2022-01-25&type=Issues) + + + ## 6.4.7 ([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.6...b77b5e38b8fa1a20150d7fa4d735dbf1c4f00418)) @@ -40,8 +56,6 @@ Use `pip install pip --upgrade` to upgrade pip. Check pip version with [@antoinecarme](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aantoinecarme+updated%3A2021-11-16..2022-01-12&type=Issues) | [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ablink1073+updated%3A2021-11-16..2022-01-12&type=Issues) | [@ccw630](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Accw630+updated%3A2021-11-16..2022-01-12&type=Issues) | [@kevin-bates](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akevin-bates+updated%3A2021-11-16..2022-01-12&type=Issues) | [@LiHua-Official](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3ALiHua-Official+updated%3A2021-11-16..2022-01-12&type=Issues) | [@penguinolog](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Apenguinolog+updated%3A2021-11-16..2022-01-12&type=Issues) | [@tornaria](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Atornaria+updated%3A2021-11-16..2022-01-12&type=Issues) - - ## 6.4.6 ([Full Changelog](https://github.com/jupyter/notebook/compare/v6.4.5...160c27d3c23dafe8b42240571db21b0d5cbae2fe)) From d7139792eca3dcd5a519ff97c1867e800bf74590 Mon Sep 17 00:00:00 2001 From: GitHub Action <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 19:27:09 +0000 Subject: [PATCH 3/5] Publish 6.4.8 SHA256 hashes: notebook-6.4.8-py3-none-any.whl: 3e702fcc54b8ae597533c3864793b7a1e971dec9e112f67235828d8a798fd654 notebook-6.4.8.tar.gz: 1e985c9dc6f678bdfffb9dc657306b5469bfa62d73e03f74e8defbf76d284312 --- notebook/_version.py | 2 +- notebook/static/base/js/namespace.js | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/notebook/_version.py b/notebook/_version.py index 6c5729f54d..7b3856f247 100644 --- a/notebook/_version.py +++ b/notebook/_version.py @@ -5,7 +5,7 @@ import re # Version string must appear intact for tbump versioning -__version__ = '6.5.0.dev0' +__version__ = '6.4.8' # Build up version_info tuple for backwards compatibility pattern = r'(?P\d+).(?P\d+).(?P\d+)(?P.*)' diff --git a/notebook/static/base/js/namespace.js b/notebook/static/base/js/namespace.js index 336e07acf2..2705bedebf 100644 --- a/notebook/static/base/js/namespace.js +++ b/notebook/static/base/js/namespace.js @@ -73,7 +73,7 @@ define(function(){ // tree jglobal('SessionList','tree/js/sessionlist'); - Jupyter.version = "6.4.7"; + Jupyter.version = "6.4.8"; Jupyter._target = '_blank'; return Jupyter; diff --git a/pyproject.toml b/pyproject.toml index 9553029ced..e0cf10c67c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ before-build-python = ["pip install babel", "npm install -g po2json"] ignore-glob = ["docs/source/examples/Notebook/Working With Markdown Cells.ipynb", "docs-translations/**/README.md", "docs/source/contributing.rst", "docs/source/examples/Notebook/JavaScript Notebook Extensions.ipynb", "CHANGELOG.md", "notebook/static/components/**/*.*"] [tool.tbump.version] -current = "6.5.0.dev0" +current = "6.4.8" regex = ''' (?P\d+)\.(?P\d+)\.(?P\d+) ((?Pa|b|rc|.dev)(?P\d+))? From 26626343384195a1f4f5461ba42eb3e133655976 Mon Sep 17 00:00:00 2001 From: GitHub Action <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jan 2022 19:27:14 +0000 Subject: [PATCH 4/5] Bump to 6.5.0.dev0 --- notebook/_version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/notebook/_version.py b/notebook/_version.py index 7b3856f247..6c5729f54d 100644 --- a/notebook/_version.py +++ b/notebook/_version.py @@ -5,7 +5,7 @@ import re # Version string must appear intact for tbump versioning -__version__ = '6.4.8' +__version__ = '6.5.0.dev0' # Build up version_info tuple for backwards compatibility pattern = r'(?P\d+).(?P\d+).(?P\d+)(?P.*)' diff --git a/pyproject.toml b/pyproject.toml index e0cf10c67c..9553029ced 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ before-build-python = ["pip install babel", "npm install -g po2json"] ignore-glob = ["docs/source/examples/Notebook/Working With Markdown Cells.ipynb", "docs-translations/**/README.md", "docs/source/contributing.rst", "docs/source/examples/Notebook/JavaScript Notebook Extensions.ipynb", "CHANGELOG.md", "notebook/static/components/**/*.*"] [tool.tbump.version] -current = "6.4.8" +current = "6.5.0.dev0" regex = ''' (?P\d+)\.(?P\d+)\.(?P\d+) ((?Pa|b|rc|.dev)(?P\d+))? From d7ade663e8cc42a38ef1976f65f1474f77d2fdf7 Mon Sep 17 00:00:00 2001 From: Kyle Cutler <67761731+kycutler@users.noreply.github.com> Date: Mon, 28 Feb 2022 14:04:36 -0800 Subject: [PATCH 5/5] nudge both the shell and control channels (#6290) --- notebook/services/kernels/handlers.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/notebook/services/kernels/handlers.py b/notebook/services/kernels/handlers.py index 6040de1d48..a2d4ddbab9 100644 --- a/notebook/services/kernels/handlers.py +++ b/notebook/services/kernels/handlers.py @@ -138,7 +138,7 @@ def nudge(self): """Nudge the zmq connections with kernel_info_requests Returns a Future that will resolve when we have received - a shell reply and at least one iopub message, + a shell or control reply and at least one iopub message, ensuring that zmq subscriptions are established, sockets are fully connected, and kernel is responsive. @@ -157,10 +157,12 @@ def nudge(self): f = Future() f.set_result(None) return f - # Use a transient shell channel to prevent leaking # shell responses to the front-end. shell_channel = kernel.connect_shell() + # Use a transient control channel to prevent leaking + # control responses to the front-end. + control_channel = kernel.connect_control() # The IOPub used by the client, whose subscriptions we are verifying. iopub_channel = self.channels["iopub"] @@ -183,6 +185,8 @@ def cleanup(f=None): iopub_channel.stop_on_recv() if not shell_channel.closed(): shell_channel.close() + if not control_channel.closed(): + control_channel.close() # trigger cleanup when both message futures are resolved both_done.add_done_callback(cleanup) @@ -193,6 +197,12 @@ def on_shell_reply(msg): self.log.debug("Nudge: resolving shell future: %s", self.kernel_id) info_future.set_result(None) + def on_control_reply(msg): + self.log.debug("Nudge: control info reply received: %s", self.kernel_id) + if not info_future.done(): + self.log.debug("Nudge: resolving control future: %s", self.kernel_id) + info_future.set_result(None) + def on_iopub(msg): self.log.debug("Nudge: IOPub received: %s", self.kernel_id) if not iopub_future.done(): @@ -202,6 +212,7 @@ def on_iopub(msg): iopub_channel.on_recv(on_iopub) shell_channel.on_recv(on_shell_reply) + control_channel.on_recv(on_control_reply) loop = IOLoop.current() # Nudge the kernel with kernel info requests until we get an IOPub message @@ -227,6 +238,12 @@ def nudge(count): # check for closed zmq socket if shell_channel.closed(): + self.log.debug("Nudge: cancelling on closed zmq socket: %s", self.kernel_id) + finish() + return + + # check for closed zmq socket + if control_channel.closed(): self.log.debug( "Nudge: cancelling on closed zmq socket: %s", self.kernel_id ) @@ -237,6 +254,7 @@ def nudge(count): log = self.log.warning if count % 10 == 0 else self.log.debug log("Nudge: attempt %s on kernel %s" % (count, self.kernel_id)) self.session.send(shell_channel, "kernel_info_request") + self.session.send(control_channel, "kernel_info_request") nonlocal nudge_handle nudge_handle = loop.call_later(0.5, nudge, count)