diff --git a/IPython/html/services/sessions/handlers.py b/IPython/html/services/sessions/handlers.py index addfd88..d88aa96 100644 --- a/IPython/html/services/sessions/handlers.py +++ b/IPython/html/services/sessions/handlers.py @@ -106,7 +106,11 @@ class SessionHandler(IPythonHandler): def delete(self, session_id): # Deletes the session with given session_id sm = self.session_manager - sm.delete_session(session_id) + try: + sm.delete_session(session_id) + except KeyError: + # the kernel was deleted but the session wasn't! + raise web.HTTPError(410, "Kernel deleted before session") self.set_status(204) self.finish() diff --git a/IPython/html/static/base/js/utils.js b/IPython/html/static/base/js/utils.js index aa85d17..cde25f3 100644 --- a/IPython/html/static/base/js/utils.js +++ b/IPython/html/static/base/js/utils.js @@ -523,12 +523,14 @@ define([ var ajax_error_msg = function (jqXHR) { // Return a JSON error message if there is one, // otherwise the basic HTTP status text. - if (jqXHR.responseJSON && jqXHR.responseJSON.message) { + if (jqXHR.responseJSON && jqXHR.responseJSON.traceback) { + return jqXHR.responseJSON.traceback; + } else if (jqXHR.responseJSON && jqXHR.responseJSON.message) { return jqXHR.responseJSON.message; } else { return jqXHR.statusText; } - } + }; var log_ajax_error = function (jqXHR, status, error) { // log ajax failures with informative messages var msg = "API request failed (" + jqXHR.status + "): ";