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); + + } }
