kill notebook its self when server cull idle kernel#5441
Closed
levinxo wants to merge 1 commit intojupyter:masterfrom
levinxo:master
Closed
kill notebook its self when server cull idle kernel#5441levinxo wants to merge 1 commit intojupyter:masterfrom levinxo:master
levinxo wants to merge 1 commit intojupyter:masterfrom
levinxo:master
Conversation
Contributor
Author
|
I have tested it locally by running |
Member
|
I can't really comment on the code change or test issue, but, from a functional standpoint, I've confirmed that these changes address the issue (after reproducing the issue prior to running with these changes). Thanks @levinxo. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
As we know, kernelManager will periodic check if kernel is inactivity. When set
MappingKernelManager.cull_connected=True, it will cull idle kernel with connections. Then, whenNotebookApp.shutdown_no_activity_timeouthas exhausted, jupyter will call tornado'sioloop.stop()to stop the whole server and release resources. Now we can find jupyter process hanging and will not exit automatic.Detail info (debug with tcpdump / wireshark / strace / telnet):
When kernel killed by kernel manager, it reply client a msg with
msg_type=shutdown_reply, but client does not handle this msg. Tornado server will wait for websocket connection produced by client, and never exit for a very long time.When we telnet tornado's port 8888, its status is listening but not accept new connection.
Debug jupyter process with strace we can find it block in a event:
poll([{fd=280, events=POLLIN}], 1, -1.