You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2016/11/03 16:45:00 UTC
zeppelin git commit: [Zeppelin-53] Broken newly created Notebook if
there is no permissions to mkdir on disk
Repository: zeppelin
Updated Branches:
refs/heads/master d4375977d -> f1e9c5208
[Zeppelin-53] Broken newly created Notebook if there is no permissions to mkdir on disk
### What is this PR for?
Error message should be shown to the user when there is permission issue with the 'notebook' storage folder.
### What type of PR is it?
Bug Fix
### Todos
NA
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-53
### How should this be tested?
- Create the notebook storage folder (i.e zeppelin/notebook) with only read and execute permission
- Try to create a notebook from UI
- The below error message as in the screenshot should be rendered
### Screenshots (if appropriate)
![zeppelin-53](https://cloud.githubusercontent.com/assets/20789766/19468248/f394f0b8-9532-11e6-86d9-89a63fa6106a.png)
### Questions:
- Does the licenses files need update? No
- Is there breaking changes for older versions? No
- Does this needs documentation? No
Author: Kavin <ka...@imaginea.com>
Closes #1535 from kavinkumarks/zeppelin-53-create-notebook-mkdir-issue and squashes the following commits:
de7c937 [Kavin] Show error message to the user when there is permission issue on creating notebook.
Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/f1e9c520
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/f1e9c520
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/f1e9c520
Branch: refs/heads/master
Commit: f1e9c520873ca3ee61f59b9425633340366b35f1
Parents: d437597
Author: Kavin <ka...@imaginea.com>
Authored: Tue Oct 18 12:22:15 2016 +0530
Committer: Lee moon soo <mo...@apache.org>
Committed: Thu Nov 3 09:44:55 2016 -0700
----------------------------------------------------------------------
.../apache/zeppelin/socket/NotebookServer.java | 56 ++++++++++++--------
1 file changed, 33 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/f1e9c520/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
----------------------------------------------------------------------
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 4934265..3e137b8 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
@@ -712,39 +712,49 @@ public class NotebookServer extends WebSocketServlet implements
return cronUpdated;
}
+
private void createNote(NotebookSocket conn, HashSet<String> userAndRoles,
Notebook notebook, Message message)
throws IOException {
AuthenticationInfo subject = new AuthenticationInfo(message.principal);
- Note note = null;
- String defaultInterpreterId = (String) message.get("defaultInterpreterId");
- if (!StringUtils.isEmpty(defaultInterpreterId)) {
- List<String> interpreterSettingIds = new LinkedList<>();
- interpreterSettingIds.add(defaultInterpreterId);
- for (String interpreterSettingId : notebook.getInterpreterFactory().
- getDefaultInterpreterSettingList()) {
- if (!interpreterSettingId.equals(defaultInterpreterId)) {
- interpreterSettingIds.add(interpreterSettingId);
+ try {
+ Note note = null;
+
+ String defaultInterpreterId = (String) message.get("defaultInterpreterId");
+ if (!StringUtils.isEmpty(defaultInterpreterId)) {
+ List<String> interpreterSettingIds = new LinkedList<>();
+ interpreterSettingIds.add(defaultInterpreterId);
+ for (String interpreterSettingId : notebook.getInterpreterFactory().
+ getDefaultInterpreterSettingList()) {
+ if (!interpreterSettingId.equals(defaultInterpreterId)) {
+ interpreterSettingIds.add(interpreterSettingId);
+ }
}
+ note = notebook.createNote(interpreterSettingIds, subject);
+ } else {
+ note = notebook.createNote(subject);
}
- note = notebook.createNote(interpreterSettingIds, subject);
- } else {
- note = notebook.createNote(subject);
- }
- note.addParagraph(); // it's an empty note. so add one paragraph
- if (message != null) {
- String noteName = (String) message.get("name");
- if (StringUtils.isEmpty(noteName)){
- noteName = "Note " + note.getId();
+ note.addParagraph(); // it's an empty note. so add one paragraph
+ if (message != null) {
+ String noteName = (String) message.get("name");
+ if (StringUtils.isEmpty(noteName)) {
+ noteName = "Note " + note.getId();
+ }
+ note.setName(noteName);
}
- note.setName(noteName);
- }
- note.persist(subject);
- addConnectionToNote(note.getId(), (NotebookSocket) conn);
- conn.send(serializeMessage(new Message(OP.NEW_NOTE).put("note", note)));
+ note.persist(subject);
+ addConnectionToNote(note.getId(), (NotebookSocket) conn);
+ conn.send(serializeMessage(new Message(OP.NEW_NOTE).put("note", note)));
+ } catch (FileSystemException e) {
+ LOG.error("Exception from createNote", e);
+ 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.")));
+ return;
+ }
broadcastNoteList(subject, userAndRoles);
}