diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java index 3e54e0579ba..10c94107700 100644 --- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java +++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java @@ -22,6 +22,7 @@ import com.google.gson.reflect.TypeToken; import org.apache.commons.lang.StringUtils; +import org.apache.commons.vfs2.FileSystemException; import org.apache.zeppelin.conf.ZeppelinConfiguration; import org.apache.zeppelin.conf.ZeppelinConfiguration.ConfVars; import org.apache.zeppelin.display.AngularObject; @@ -1147,7 +1148,18 @@ private void runParagraph(NotebookSocket conn, HashSet userAndRoles, Not } AuthenticationInfo subject = new AuthenticationInfo(fromMessage.principal); - note.persist(subject); + + try { + note.persist(subject); + } catch (FileSystemException ex) { + LOG.error("Exception from run", ex); + conn.send(serializeMessage(new Message(OP.ERROR_INFO).put("info", + "Oops! There is something wrong with the notebook file system. " + + "Please check the logs for more details."))); + // don't run the paragraph when there is error on persisting the note information + return; + } + try { note.run(paragraphId); } catch (Exception ex) { diff --git a/zeppelin-web/src/components/websocketEvents/websocketEvents.factory.js b/zeppelin-web/src/components/websocketEvents/websocketEvents.factory.js index 36e90b49388..6e0bbbae295 100644 --- a/zeppelin-web/src/components/websocketEvents/websocketEvents.factory.js +++ b/zeppelin-web/src/components/websocketEvents/websocketEvents.factory.js @@ -117,6 +117,21 @@ angular.module('zeppelinWebApp').factory('websocketEvents', $rootScope.$broadcast('noteRevision', data); } else if (op === 'INTERPRETER_BINDINGS') { $rootScope.$broadcast('interpreterBindings', data); + } else if (op === 'ERROR_INFO') { + BootstrapDialog.show({ + closable: false, + closeByBackdrop: false, + closeByKeyboard: false, + title: 'Details', + message: data.info.toString(), + buttons: [{ + // close all the dialogs when there are error on running all paragraphs + label: 'Close', + action: function() { + BootstrapDialog.closeAll(); + } + }] + }); } }); diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/socket/Message.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/socket/Message.java index b314e6227fa..2aded60ee40 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/socket/Message.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/socket/Message.java @@ -139,7 +139,8 @@ public static enum OP { SAVE_INTERPRETER_BINDINGS, // [c-s] save interpreter bindings // @param noteID // @param selectedSettingIds - INTERPRETER_BINDINGS // [s-c] interpreter bindings + INTERPRETER_BINDINGS, // [s-c] interpreter bindings + ERROR_INFO // [s-c] error information to be sent } public OP op;