From f8620cff7b1109176e7100fda5d06358f1ae792f Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Tue, 31 May 2016 12:05:30 +0900 Subject: [PATCH 1/8] [ZEPPELIN-905] fix failed notebook import bug --- .../main/java/org/apache/zeppelin/notebook/Note.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 a73aad95a8f..bbaadcf0cb2 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 @@ -175,17 +175,19 @@ public void addCloneParagraph(Paragraph srcParagraph) { Map config = new HashMap<>(srcParagraph.getConfig()); Map param = new HashMap<>(srcParagraph.settings.getParams()); Map form = new HashMap<>(srcParagraph.settings.getForms()); - Gson gson = new Gson(); - InterpreterResult result = gson.fromJson( - gson.toJson(srcParagraph.getReturn()), - InterpreterResult.class); newParagraph.setConfig(config); newParagraph.settings.setParams(param); newParagraph.settings.setForms(form); newParagraph.setText(srcParagraph.getText()); newParagraph.setTitle(srcParagraph.getTitle()); - newParagraph.setReturn(result, null); + + try { + Gson gson = new Gson(); + String resultJson = gson.toJson(srcParagraph.getReturn()); + InterpreterResult result = gson.fromJson(resultJson, InterpreterResult.class); + newParagraph.setReturn(result, null); + } catch (Exception e) { /*ignore*/ } synchronized (paragraphs) { paragraphs.add(newParagraph); From 91da565e6cf69c5721010743433950b3369a54bf Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Tue, 31 May 2016 14:14:12 +0900 Subject: [PATCH 2/8] [ZEPPELIN-905] add test --- .../zeppelin/notebook/NotebookTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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 23a4b1b40b8..deec4f045ab 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 @@ -308,6 +308,28 @@ public void testAutoRestartInterpreterAfterSchedule() throws InterruptedExceptio notebook.refreshCron(note.id()); } + @Test + public void testExportAndImportNote() throws IOException, CloneNotSupportedException, + InterruptedException { + Note note = notebook.createNote(); + note.getNoteReplLoader().setInterpreters(factory.getDefaultInterpreterSettingList()); + + final Paragraph p = note.addParagraph(); + String simpleText = "hello world"; + p.setText(simpleText); + + String exportedNoteJson = notebook.exportNote(note.getId()); + + Note importedNote = notebook.importNote(exportedNoteJson, "Title"); + + Paragraph p2 = importedNote.getParagraphs().get(0); + + // Test + assertEquals(p.getId(), p2.getId()); + assertEquals(p.text, p2.text); + assertEquals(p.getResult().message(), p2.getResult().message()); + } + @Test public void testCloneNote() throws IOException, CloneNotSupportedException, InterruptedException { From 32c91720fb9df8ce6e583ccd0fc3a5226cb88546 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Tue, 31 May 2016 19:23:55 +0900 Subject: [PATCH 3/8] fix test, better implementation --- .../src/main/java/org/apache/zeppelin/notebook/Note.java | 9 ++------- .../java/org/apache/zeppelin/notebook/NotebookTest.java | 3 +++ 2 files changed, 5 insertions(+), 7 deletions(-) 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 bbaadcf0cb2..2432ad1e3b0 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 @@ -20,7 +20,6 @@ import java.io.IOException; import java.io.Serializable; import java.util.*; -import java.util.concurrent.Callable; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -38,7 +37,6 @@ import org.apache.zeppelin.scheduler.JobListener; import org.apache.zeppelin.search.SearchService; -import com.google.gson.Gson; import org.apache.zeppelin.user.AuthenticationInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -183,11 +181,8 @@ public void addCloneParagraph(Paragraph srcParagraph) { newParagraph.setTitle(srcParagraph.getTitle()); try { - Gson gson = new Gson(); - String resultJson = gson.toJson(srcParagraph.getReturn()); - InterpreterResult result = gson.fromJson(resultJson, InterpreterResult.class); - newParagraph.setReturn(result, null); - } catch (Exception e) { /*ignore*/ } + newParagraph.setReturn((InterpreterResult) srcParagraph.getReturn(), null); + } catch (ClassCastException e) { /*ignore*/ } synchronized (paragraphs) { paragraphs.add(newParagraph); 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 deec4f045ab..457a9c790cd 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 @@ -318,6 +318,9 @@ public void testExportAndImportNote() throws IOException, CloneNotSupportedExcep String simpleText = "hello world"; p.setText(simpleText); + note.runAll(); + while(p.isTerminated()==false || p.getResult()==null) Thread.yield(); + String exportedNoteJson = notebook.exportNote(note.getId()); Note importedNote = notebook.importNote(exportedNoteJson, "Title"); From 04e777cdd83f7ca7fe23ca84493e48511a829496 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Wed, 1 Jun 2016 10:20:45 +0900 Subject: [PATCH 4/8] revert implementation --- .../src/main/java/org/apache/zeppelin/notebook/Note.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 2432ad1e3b0..bbaadcf0cb2 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 @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.Serializable; import java.util.*; +import java.util.concurrent.Callable; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -37,6 +38,7 @@ import org.apache.zeppelin.scheduler.JobListener; import org.apache.zeppelin.search.SearchService; +import com.google.gson.Gson; import org.apache.zeppelin.user.AuthenticationInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -181,8 +183,11 @@ public void addCloneParagraph(Paragraph srcParagraph) { newParagraph.setTitle(srcParagraph.getTitle()); try { - newParagraph.setReturn((InterpreterResult) srcParagraph.getReturn(), null); - } catch (ClassCastException e) { /*ignore*/ } + Gson gson = new Gson(); + String resultJson = gson.toJson(srcParagraph.getReturn()); + InterpreterResult result = gson.fromJson(resultJson, InterpreterResult.class); + newParagraph.setReturn(result, null); + } catch (Exception e) { /*ignore*/ } synchronized (paragraphs) { paragraphs.add(newParagraph); From 27ff2efcf4edba2ef6ec9b84773e2532e7b84134 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Wed, 1 Jun 2016 11:41:22 +0900 Subject: [PATCH 5/8] trigger CI build --- .../src/main/java/org/apache/zeppelin/notebook/Note.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bbaadcf0cb2..a4370d08969 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 @@ -187,7 +187,7 @@ public void addCloneParagraph(Paragraph srcParagraph) { String resultJson = gson.toJson(srcParagraph.getReturn()); InterpreterResult result = gson.fromJson(resultJson, InterpreterResult.class); newParagraph.setReturn(result, null); - } catch (Exception e) { /*ignore*/ } + } catch (Exception e) { /* ignore */ } synchronized (paragraphs) { paragraphs.add(newParagraph); From e51889d80ffe21350263b331e5c77ee72c00b674 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Fri, 3 Jun 2016 12:48:25 +0900 Subject: [PATCH 6/8] log exception --- .../src/main/java/org/apache/zeppelin/notebook/Note.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 a4370d08969..7ee946bad04 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 @@ -187,7 +187,10 @@ public void addCloneParagraph(Paragraph srcParagraph) { String resultJson = gson.toJson(srcParagraph.getReturn()); InterpreterResult result = gson.fromJson(resultJson, InterpreterResult.class); newParagraph.setReturn(result, null); - } catch (Exception e) { /* ignore */ } + } catch (Exception e) { + // 'result' part of Note consists of exception, instead of actual interpreter results + logger.info("Paragraph " + srcParagraph.getId() + " has a result with exception."); + } synchronized (paragraphs) { paragraphs.add(newParagraph); From 3b16f024d8492e8d333d793f7102021d7b440763 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Fri, 3 Jun 2016 19:02:43 +0900 Subject: [PATCH 7/8] log info -> warn, add message --- .../src/main/java/org/apache/zeppelin/notebook/Note.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7ee946bad04..b01b51ad619 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 @@ -189,7 +189,7 @@ public void addCloneParagraph(Paragraph srcParagraph) { newParagraph.setReturn(result, null); } catch (Exception e) { // 'result' part of Note consists of exception, instead of actual interpreter results - logger.info("Paragraph " + srcParagraph.getId() + " has a result with exception."); + logger.warn("Paragraph " + srcParagraph.getId() + " has a result with exception. " + e.getMessage()); } synchronized (paragraphs) { From 571e8fcfdecf9681506ac48fd0084cca58bf9885 Mon Sep 17 00:00:00 2001 From: Kevin Kim Date: Fri, 3 Jun 2016 19:31:19 +0900 Subject: [PATCH 8/8] stylish code --- .../src/main/java/org/apache/zeppelin/notebook/Note.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 b01b51ad619..1deb3f88299 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 @@ -189,7 +189,8 @@ public void addCloneParagraph(Paragraph srcParagraph) { newParagraph.setReturn(result, null); } catch (Exception e) { // 'result' part of Note consists of exception, instead of actual interpreter results - logger.warn("Paragraph " + srcParagraph.getId() + " has a result with exception. " + e.getMessage()); + logger.warn("Paragraph " + srcParagraph.getId() + " has a result with exception. " + + e.getMessage()); } synchronized (paragraphs) {