ipython / ipykernel

IPython Kernel for Jupyter
https://ipykernel.readthedocs.io/en/stable/
BSD 3-Clause "New" or "Revised" License
631 stars 361 forks source link

Status bar showing idle status for a busy kernel when switching notebooks #1121

Open kiranik opened 1 year ago

kiranik commented 1 year ago

Description

Jupyter lab status bar is showing that the kernel is idle even though the kernel is busy as seen in the top right kernel status tab. This occurs when we switch between an idle notebook and a busy notebook.

Reproduce

  1. Create a new notebook named notebook_1.ipynb. Add a long running script in a cell and execute the same.
  2. Create a second notebook named notebook_2.ipynb. Assign a kernel and wait until kernel is idle.
  3. Switch between notebook_1.ipynb and notebook_2.ipynb.
  4. Check status bar of notebook_1.ipynb. Kernel status will be shown as idle instead of busy.

Expected behaviour

Kernel status of busy notebook should be shown as busy instead of idle.

Context

package versions
aiofiles==22.1.0
aiosqlite==0.19.0
anyio==3.6.2
appnope==0.1.3
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
arrow==1.2.3
attrs==23.1.0
Babel==2.12.1
backcall==0.2.0
beautifulsoup4==4.12.2
bleach==6.0.0
cached-property==1.5.2
certifi==2023.5.7
cffi==1.15.1
charset-normalizer==3.1.0
debugpy==1.6.7
decorator==5.1.1
defusedxml==0.7.1
entrypoints==0.4
fastjsonschema==2.17.1
fqdn==1.5.1
idna==3.4
importlib-metadata==6.6.0
importlib-resources==5.12.0
ipykernel==6.16.2
ipython==7.34.0
ipython-genutils==0.2.0
isoduration==20.11.0
jedi==0.18.2
Jinja2==3.1.2
json5==0.9.14
jsonpointer==2.3
jsonschema==4.17.3
jupyter-events==0.6.3
jupyter-server==1.24.0
jupyter-ydoc==0.2.4
jupyter_client==7.4.9
jupyter_core==4.12.0
jupyter_server_fileid==0.9.0
jupyter_server_ydoc==0.8.0
jupyterlab==3.6.3
jupyterlab-pygments==0.2.2
jupyterlab_server==2.22.1
MarkupSafe==2.1.2
matplotlib-inline==0.1.6
mistune==2.0.5
nbclassic==1.0.0
nbclient==0.7.4
nbconvert==7.4.0
nbformat==5.8.0
nest-asyncio==1.5.6
notebook==6.5.4
notebook_shim==0.2.3
packaging==23.1
pandocfilters==1.5.0
parso==0.8.3
pexpect==4.8.0
pickleshare==0.7.5
pkgutil_resolve_name==1.3.10
prometheus-client==0.16.0
prompt-toolkit==3.0.38
psutil==5.9.5
ptyprocess==0.7.0
pycparser==2.21
Pygments==2.15.1
pyrsistent==0.19.3
python-dateutil==2.8.2
python-json-logger==2.0.7
pytz==2023.3
PyYAML==6.0
pyzmq==25.0.2
requests==2.30.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
Send2Trash==1.8.2
six==1.16.0
sniffio==1.3.0
soupsieve==2.4.1
terminado==0.17.1
tinycss2==1.2.1
tomli==2.0.1
tornado==6.2
traitlets==5.9.0
typing_extensions==4.5.0
uri-template==1.2.0
urllib3==2.0.2
wcwidth==0.2.6
webcolors==1.13
webencodings==0.5.1
websocket-client==1.5.2
y-py==0.5.9
ypy-websocket==0.8.2
zipp==3.15.0

https://github.com/jupyterlab/jupyterlab/assets/6435143/46594eec-75e3-4fcb-9ece-4b25360dedbd

Original issue was opened as jupyterlab/jupyterlab#14578. Migration requested by brijsiyag IOpub messages received twice with alternate execution_state as idle and busy. This leads to the inconsistent behaviour.

Zsailer commented 1 year ago

I commented on the original issue in JupyterLab. I don't think this is a problem with ipykernel; rather, JupyterLab is not properly handling IOPub status messages from multiple channels in the client.