You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by zj...@apache.org on 2020/02/13 09:40:35 UTC

[zeppelin] branch master updated: [ZEPPELIN-4607]. Return OK when fail to run paragraph

This is an automated email from the ASF dual-hosted git repository.

zjffdu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git


The following commit(s) were added to refs/heads/master by this push:
     new 7c6cc03  [ZEPPELIN-4607]. Return OK when fail to run paragraph
7c6cc03 is described below

commit 7c6cc039745eafdcdac382428423e0c7dcb2f4ce
Author: Jeff Zhang <zj...@apache.org>
AuthorDate: Wed Feb 12 11:08:54 2020 +0800

    [ZEPPELIN-4607]. Return OK when fail to run paragraph
    
    ### What is this PR for?
    
    This PR will return FAIL when fail to run paragraph. And it will contain the the failed paragraph result.
    
    ### What type of PR is it?
    [Improvement]
    
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-4607
    
    ### How should this be tested?
    * CI pass
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Jeff Zhang <zj...@apache.org>
    
    Closes #3642 from zjffdu/ZEPPELIN-4607 and squashes the following commits:
    
    f684b5c9f [Jeff Zhang] [ZEPPELIN-4607]. Return OK when fail to run paragraph
---
 .../main/java/org/apache/zeppelin/rest/NotebookRestApi.java  |  3 +--
 .../java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java   | 10 +++++-----
 .../src/main/java/org/apache/zeppelin/notebook/Note.java     |  5 +++--
 .../java/org/apache/zeppelin/notebook/scheduler/CronJob.java |  6 +++++-
 .../test/java/org/apache/zeppelin/notebook/NotebookTest.java | 12 +++++-------
 5 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java
index 49409bc..d0d7cb3 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java
@@ -672,8 +672,7 @@ public class NotebookRestApi extends AbstractRestApi {
       note.runAll(subject, blocking);
     } catch (Exception ex) {
       LOG.error("Exception from run", ex);
-      return new JsonResponse<>(Status.PRECONDITION_FAILED,
-          ex.getMessage() + "- Not selected or Invalid Interpreter bind").build();
+      return new JsonResponse<>(Status.EXPECTATION_FAILED, ex.getMessage()).build();
     }
     return new JsonResponse<>(Status.OK).build();
   }
diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java
index bb16b94..abb684c 100644
--- a/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java
+++ b/zeppelin-server/src/test/java/org/apache/zeppelin/rest/ZeppelinRestApiTest.java
@@ -428,7 +428,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
   }
 
   @Test
-  public void testNoteJobs() throws IOException, InterruptedException {
+  public void testNoteJobs() throws Exception {
     LOG.info("testNoteJobs");
 
     Note note = null;
@@ -489,7 +489,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
   }
 
   @Test
-  public void testGetNoteJob() throws IOException, InterruptedException {
+  public void testGetNoteJob() throws Exception {
     LOG.info("testGetNoteJob");
 
     Note note = null;
@@ -544,7 +544,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
   }
 
   @Test
-  public void testRunParagraphWithParams() throws IOException, InterruptedException {
+  public void testRunParagraphWithParams() throws Exception {
     LOG.info("testRunParagraphWithParams");
 
     Note note = null;
@@ -586,7 +586,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
   }
 
   @Test
-  public void testJobs() throws InterruptedException, IOException{
+  public void testJobs() throws Exception {
     // create a note and a paragraph
     Note note = null;
     try {
@@ -634,7 +634,7 @@ public class ZeppelinRestApiTest extends AbstractTestRestApi {
   }
 
   @Test
-  public void testCronDisable() throws InterruptedException, IOException{
+  public void testCronDisable() throws Exception {
     Note note = null;
     try {
       // create a note and a paragraph
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 dbecbf2..ef6c9b2 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
@@ -830,7 +830,7 @@ public class Note implements JsonSerializable {
     }
   }
 
-  public void runAll(AuthenticationInfo authenticationInfo, boolean blocking) {
+  public void runAll(AuthenticationInfo authenticationInfo, boolean blocking) throws Exception {
     setRunning(true);
     try {
       for (Paragraph p : getParagraphs()) {
@@ -840,7 +840,8 @@ public class Note implements JsonSerializable {
         p.setAuthenticationInfo(authenticationInfo);
         if (!run(p.getId(), blocking)) {
           logger.warn("Skip running the remain notes because paragraph {} fails", p.getId());
-          break;
+          throw new Exception("Fail to run note because paragraph " + p.getId() + " is failed, " +
+                  p.getReturn());
         }
       }
     } finally {
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/scheduler/CronJob.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/scheduler/CronJob.java
index 7426750..1d2c3ff 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/scheduler/CronJob.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/scheduler/CronJob.java
@@ -107,6 +107,10 @@ public class CronJob implements org.quartz.Job {
             cronExecutingUser,
             StringUtils.isEmpty(cronExecutingRoles) ? null : cronExecutingRoles,
             null);
-    note.runAll(authenticationInfo, true);
+    try {
+      note.runAll(authenticationInfo, true);
+    } catch (Exception e) {
+      logger.warn("Fail to run note", e);
+    }
   }
 }
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 c5cfb8a..2cc9ba8 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
@@ -450,7 +450,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
   }
 
   @Test
-  public void testRunAll() throws IOException {
+  public void testRunAll() throws Exception {
     Note note = notebook.createNote("note1", anonymous);
 
     // p1
@@ -822,8 +822,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
   }
 
   @Test
-  public void testExportAndImportNote() throws IOException, CloneNotSupportedException,
-      InterruptedException, InterpreterException, SchedulerException, RepositoryException {
+  public void testExportAndImportNote() throws Exception {
     Note note = notebook.createNote("note1", anonymous);
 
     final Paragraph p = note.addNewParagraph(AuthenticationInfo.ANONYMOUS);
@@ -857,7 +856,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
   }
 
   @Test
-  public void testCloneNote() throws IOException {
+  public void testCloneNote() throws Exception {
     Note note = notebook.createNote("note1", anonymous);
 
     final Paragraph p = note.addNewParagraph(AuthenticationInfo.ANONYMOUS);
@@ -888,7 +887,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
   }
 
   @Test
-  public void testResourceRemovealOnParagraphNoteRemove() throws IOException {
+  public void testResourceRemovealOnParagraphNoteRemove() throws Exception {
     Note note = notebook.createNote("note1", anonymous);
 
     Paragraph p1 = note.addNewParagraph(AuthenticationInfo.ANONYMOUS);
@@ -1155,8 +1154,7 @@ public class NotebookTest extends AbstractInterpreterTest implements ParagraphJo
   }
 
   @Test
-  public void testAbortParagraphStatusOnInterpreterRestart() throws InterruptedException,
-      IOException, InterpreterException {
+  public void testAbortParagraphStatusOnInterpreterRestart() throws Exception {
     Note note = notebook.createNote("note1", anonymous);
 
     // create three paragraphs