You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by jo...@apache.org on 2017/03/16 15:07:35 UTC
zeppelin git commit: [ZEPPELIN-2179] "clear output" paragraph doesn't
work in personalized mode (branch-0.7)
Repository: zeppelin
Updated Branches:
refs/heads/branch-0.7 56fa8b534 -> 75cf72e9b
[ZEPPELIN-2179] "clear output" paragraph doesn't work in personalized mode (branch-0.7)
### What is this PR for?
`clear output` (`cmd` + `opt` + `L`) doesn't work in the personalized mode.
- CI failure might be related with https://github.com/apache/zeppelin/pull/2103
### What type of PR is it?
[Bug Fix]
### Todos
NONE
### What is the Jira issue?
[ZEPPELIN-2179](https://issues.apache.org/jira/browse/ZEPPELIN-2179)
### How should this be tested?
1. Execute a paragraph
2. Click `clear output` button (`CMD` + `OPT` + `L)
### Screenshots (if appropriate)
NONE
### Questions:
* Does the licenses files need update? - NO
* Is there breaking changes for older versions? - NO
* Does this needs documentation? - NO
Author: 1ambda <1a...@gmail.com>
Closes #2116 from 1ambda/ZEPPELIN-2179/clear-output-doesnt-work-in-person-mode and squashes the following commits:
e2593f6 [1ambda] fix Remove unused param
65d1147 [1ambda] fix: Remove unused parameter
0386c5c [1ambda] fix: Clear personalized paragraph output
Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/75cf72e9
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/75cf72e9
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/75cf72e9
Branch: refs/heads/branch-0.7
Commit: 75cf72e9b374819fee550a33aa41258bd25b03e4
Parents: 56fa8b5
Author: 1ambda <1a...@gmail.com>
Authored: Thu Mar 16 06:17:15 2017 +0900
Committer: Jongyoul Lee <jo...@apache.org>
Committed: Fri Mar 17 00:07:28 2017 +0900
----------------------------------------------------------------------
.../apache/zeppelin/socket/NotebookServer.java | 17 +++++++++--------
.../java/org/apache/zeppelin/notebook/Note.java | 18 ++++++++++++++----
.../apache/zeppelin/notebook/NotebookTest.java | 2 +-
3 files changed, 24 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/75cf72e9/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 6791b63..3034d13 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
@@ -621,14 +621,13 @@ public class NotebookServer extends WebSocketServlet
public void broadcastParagraph(Note note, Paragraph p) {
if (note.isPersonalizedMode()) {
- broadcastParagraphs(p.getUserParagraphMap(), p);
+ broadcastParagraphs(p.getUserParagraphMap());
} else {
broadcast(note.getId(), new Message(OP.PARAGRAPH).put("paragraph", p));
}
}
- public void broadcastParagraphs(Map<String, Paragraph> userParagraphMap,
- Paragraph defaultParagraph) {
+ public void broadcastParagraphs(Map<String, Paragraph> userParagraphMap) {
if (null != userParagraphMap) {
for (String user : userParagraphMap.keySet()) {
multicastToUser(user,
@@ -1143,7 +1142,7 @@ public class NotebookServer extends WebSocketServlet
if (note.isPersonalizedMode()) {
Map<String, Paragraph> userParagraphMap =
note.getParagraph(paragraphId).getUserParagraphMap();
- broadcastParagraphs(userParagraphMap, p);
+ broadcastParagraphs(userParagraphMap);
} else {
broadcastParagraph(note, p);
}
@@ -1239,9 +1238,11 @@ public class NotebookServer extends WebSocketServlet
notebookAuthorization.getWriters(noteId));
return;
}
- note.clearParagraphOutput(paragraphId);
- Paragraph paragraph = note.getParagraph(paragraphId);
- broadcastParagraph(note, paragraph);
+
+ String user = (note.isPersonalizedMode()) ?
+ new AuthenticationInfo(fromMessage.principal).getUser() : null;
+ Paragraph p = note.clearParagraphOutput(paragraphId, user);
+ broadcastParagraph(note, p);
}
private void completion(NotebookSocket conn, HashSet<String> userAndRoles, Notebook notebook,
@@ -1806,7 +1807,7 @@ public class NotebookServer extends WebSocketServlet
public void onOutputClear(String noteId, String paragraphId) {
Notebook notebook = notebook();
final Note note = notebook.getNote(noteId);
- note.clearParagraphOutput(paragraphId);
+ note.clearParagraphOutput(paragraphId, null);
Paragraph paragraph = note.getParagraph(paragraphId);
broadcastParagraph(note, paragraph);
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/75cf72e9/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
index f341e16..e019ee5 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
@@ -395,15 +395,25 @@ public class Note implements Serializable, ParagraphJobListener {
* Clear paragraph output by id.
*
* @param paragraphId ID of paragraph
+ * @param user not null if personalized mode is enabled
* @return Paragraph
*/
- public Paragraph clearParagraphOutput(String paragraphId) {
+ public Paragraph clearParagraphOutput(String paragraphId, String user) {
synchronized (paragraphs) {
for (Paragraph p : paragraphs) {
- if (p.getId().equals(paragraphId)) {
- p.setReturn(null, null);
- return p;
+ if (!p.getId().equals(paragraphId)) {
+ continue;
}
+
+ /** `broadcastParagraph` requires original paragraph */
+ Paragraph originParagraph = p;
+
+ if (user != null) {
+ p = p.getUserParagraphMap().get(user);
+ }
+
+ p.setReturn(null, null);
+ return originParagraph;
}
}
return null;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/75cf72e9/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
index 48a4e2e..5b394ee 100644
--- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
+++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
@@ -284,7 +284,7 @@ public class NotebookTest implements JobListenerFactory{
assertEquals("repl1: hello world", p1.getResult().message().get(0).getData());
// clear paragraph output/result
- note.clearParagraphOutput(p1.getId());
+ note.clearParagraphOutput(p1.getId(), null);
assertNull(p1.getResult());
notebook.removeNote(note.getId(), anonymous);
}