Skip to content

Conversation

@kevin-bates
Copy link
Member

When kernels are culled, the kernel is terminated in the background,
unbeknownst to the session management. As a result, invalid sessions
can be produced that appear to exist, yet cannot produce a model from
the persisted row due to the associated kernel no longer being active.
Prior to this change, these sessions, when encountered via a subsequent
call to get_session(), would be deleted and a KeyError would be raised.

This change updates the existence check to tolerate those kinds of sessions.
It removes such sessions (as would happen previously), but rather than
raise a KeyError when attempting to convert the row to a dictionary,
it logs a warning and returns None, which then allows session_exists()
to return False since the session was removed (as was ultimately the
case previously).

Calls to get_session() remain just as before and have the potential
to raise KeyError in such cases. The difference now being that the
KeyError is accompanied by a message indicating the cause.

Fixes #4209

When kernels are culled, the kernel is terminated in the background,
unbeknownst to the session management.  As a result, invalid sessions
can be produced that appear to exist, yet cannot produce a model from
the persisted row due to the associated kernel no longer being active.
Prior to this change, these sessions, when encountered via a subsequent
call to `get_session()`, would be deleted and a KeyError would be raised.

This change updates the existence check to tolerate those kinds of sessions.
It removes such sessions (as would happen previously), but rather than
raise a KeyError when attempting to convert the row to a dictionary,
it logs a warning and returns None, which then allows `session_exists()`
to return False since the session was removed (as was ultimately the
case previously).

Calls to `get_session()` remain just as before and have the potential
to raise `KeyError` in such cases.  The difference now being that the
`KeyError` is accompanied by a message indicating the cause.

Fixes jupyter#4209
@minrk minrk merged commit 21b93ea into jupyter:master Nov 19, 2018
@minrk
Copy link
Member

minrk commented Nov 19, 2018

Thanks!

@kevin-bates kevin-bates deleted the tolerate-culled-kernels branch June 26, 2019 22:12
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 27, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Opening notebooks occasionally yields kernel error, KeyError

2 participants