Repository: incubator-zeppelin
Updated Branches:
  refs/heads/master 2e4d33565 -> 80868bcd5


ZEPPELIN-19 Failures from disabled interpreters not reported

Handle all exceptions from NotebookServer runParagraph and update Note

Author: Ram Venkatesh <[email protected]>

Closes #22 from RamVenkatesh/ZEPPELIN-19 and squashes the following commits:

44b3759 [Ram Venkatesh] added a fix for unknown interpreters
521429b [Ram Venkatesh] Merge remote-tracking branch 'upstream/master' into 
ZEPPELIN-19
6be5de7 [Ram Venkatesh] Fixed issue in reporting interpreter errors
4576183 [Ram Venkatesh] ZEPPELIN-19 Failures from disabled interpreters not 
reported Handle all exceptions from NotebookServer runParagraph and update Note


Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/80868bcd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/80868bcd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/80868bcd

Branch: refs/heads/master
Commit: 80868bcd5f9ad981d04c1adfd707232c8becc3e4
Parents: 2e4d335
Author: Ram Venkatesh <[email protected]>
Authored: Thu Apr 2 19:28:15 2015 -0700
Committer: Lee moon soo <[email protected]>
Committed: Sun Apr 5 21:55:22 2015 +0900

----------------------------------------------------------------------
 .../nflabs/zeppelin/interpreter/InterpreterUtils.java  |  7 ++++++-
 .../main/java/com/nflabs/zeppelin/scheduler/Job.java   |  6 ++++++
 .../com/nflabs/zeppelin/socket/NotebookServer.java     | 13 ++++++++++++-
 .../main/java/com/nflabs/zeppelin/notebook/Note.java   |  4 ++++
 .../zeppelin/notebook/NoteInterpreterLoader.java       | 12 ++++++++----
 .../java/com/nflabs/zeppelin/notebook/Paragraph.java   |  7 ++++++-
 6 files changed, 42 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/80868bcd/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
 
b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
index fb87175..37f9ff9 100644
--- 
a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
+++ 
b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/interpreter/InterpreterUtils.java
@@ -17,6 +17,7 @@
  */
 package com.nflabs.zeppelin.interpreter;
 
+
 import java.lang.reflect.InvocationTargetException;
 
 /**
@@ -31,6 +32,10 @@ public class InterpreterUtils {
         return cause.getMessage();
       }
     }
-    return ex.getMessage();
+    String message = ex.getMessage();
+    if (message == null || message == "") {
+      return ex.toString();
+    }
+    return message;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/80868bcd/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/scheduler/Job.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/scheduler/Job.java 
b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/scheduler/Job.java
index 00465b3..29f72b5 100644
--- a/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/scheduler/Job.java
+++ b/zeppelin-interpreter/src/main/java/com/nflabs/zeppelin/scheduler/Job.java
@@ -4,6 +4,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Map;
 
+import com.nflabs.zeppelin.interpreter.InterpreterResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -192,6 +193,7 @@ public abstract class Job {
 
   protected void setException(Throwable t) {
     exception = t;
+    errorMessage = getStack(t);
   }
 
   public Object getReturn() {
@@ -237,4 +239,8 @@ public abstract class Job {
   private Logger logger() {
     return LoggerFactory.getLogger(Job.class);
   }
+
+  protected void setResult(Object result) {
+    this.result = result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/80868bcd/zeppelin-server/src/main/java/com/nflabs/zeppelin/socket/NotebookServer.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-server/src/main/java/com/nflabs/zeppelin/socket/NotebookServer.java 
b/zeppelin-server/src/main/java/com/nflabs/zeppelin/socket/NotebookServer.java
index f38dc65..fd9960b 100644
--- 
a/zeppelin-server/src/main/java/com/nflabs/zeppelin/socket/NotebookServer.java
+++ 
b/zeppelin-server/src/main/java/com/nflabs/zeppelin/socket/NotebookServer.java
@@ -8,6 +8,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.nflabs.zeppelin.interpreter.InterpreterResult;
 import org.java_websocket.WebSocket;
 import org.java_websocket.handshake.ClientHandshake;
 import org.java_websocket.server.WebSocketServer;
@@ -423,7 +424,17 @@ public class NotebookServer extends WebSocketServer 
implements JobListenerFactor
     note.persist();
     broadcastNote(note);
 
-    note.run(paragraphId);
+    try {
+      note.run(paragraphId);
+    }
+    catch (Exception ex) {
+      LOG.error("Exception from run", ex);
+      if (p != null) {
+        p.setReturn(new InterpreterResult(
+          InterpreterResult.Code.ERROR, ex.getMessage()), ex);
+        p.setStatus(Status.ERROR);
+      }
+    }
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/80868bcd/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java 
b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
index 934760f..df0a91d 100644
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
+++ b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Note.java
@@ -11,6 +11,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Random;
 
+import com.nflabs.zeppelin.interpreter.InterpreterException;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
@@ -231,6 +232,9 @@ public class Note implements Serializable, JobListener {
     p.setNoteReplLoader(replLoader);
     p.setListener(jobListenerFactory.getParagraphJobListener(this));
     Interpreter intp = replLoader.get(p.getRequiredReplName());
+    if (intp == null) {
+      throw new InterpreterException("Interpreter " + p.getRequiredReplName() 
+ " not found");
+    }
     intp.getScheduler().submit(p);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/80868bcd/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
 
b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
index ec702b9..ba570f6 100644
--- 
a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
+++ 
b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/NoteInterpreterLoader.java
@@ -66,12 +66,16 @@ public class NoteInterpreterLoader {
     if (replName == null) {
       return settings.get(0).getInterpreterGroup().getFirst();
     }
-    
-    String interpreterClassName = 
Interpreter.registeredInterpreters.get(replName).getClassName();
-    if (interpreterClassName == null) {
+
+    if (Interpreter.registeredInterpreters == null) {
+      return null;
+    }
+    Interpreter.RegisteredInterpreter registeredInterpreter
+      = Interpreter.registeredInterpreters.get(replName);
+    if (registeredInterpreter == null || registeredInterpreter.getClassName() 
== null) {
       throw new InterpreterException(replName + " interpreter not found");
     }
-    
+    String interpreterClassName = registeredInterpreter.getClassName();
     for (InterpreterSetting setting : settings) {
       InterpreterGroup intpGroup = setting.getInterpreterGroup();
       for (Interpreter interpreter : intpGroup) {

http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/80868bcd/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java 
b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
index 78e3b87..aabd5de 100644
--- a/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
+++ b/zeppelin-zengine/src/main/java/com/nflabs/zeppelin/notebook/Paragraph.java
@@ -141,7 +141,6 @@ public class Paragraph extends Job implements Serializable {
     return (InterpreterResult) getReturn();
   }
 
-
   @Override
   public int progress() {
     String replName = getRequiredReplName();
@@ -213,4 +212,10 @@ public class Paragraph extends Job implements Serializable 
{
   public void setConfig(Map<String, Object> config) {
     this.config = config;
   }
+
+  public void setReturn(InterpreterResult value, Throwable t) {
+    setResult(value);
+    setException(t);
+
+  }
 }

Reply via email to