Repository: zeppelin Updated Branches: refs/heads/master d55058b05 -> eb88b0b9e
ZEPPELIN-2108. Livy interpreter job cancellation throws NPE ### What is this PR for? It happens in some corner cases where output is null when statement is cancelled. ### What type of PR is it? [Bug Fix] ### Todos * [ ] - Task ### What is the Jira issue? * https://issues.apache.org/jira/browse/ZEPPELIN-2108 ### How should this be tested? Tested manually ![livy_cancelled](https://cloud.githubusercontent.com/assets/164491/23003509/2fb0fc9c-f42c-11e6-8cba-ae654a4e5c08.png) . ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: Jeff Zhang <zjf...@apache.org> Closes #2025 from zjffdu/ZEPPELIN-2108 and squashes the following commits: 191b18a [Jeff Zhang] ZEPPELIN-2108. Livy interpreter job cancellation throws NPE Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/eb88b0b9 Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/eb88b0b9 Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/eb88b0b9 Branch: refs/heads/master Commit: eb88b0b9e7b711c1a2003fe4a91164976fc61fcd Parents: d55058b Author: Jeff Zhang <zjf...@apache.org> Authored: Tue Feb 14 13:34:38 2017 +0800 Committer: Felix Cheung <felixche...@apache.org> Committed: Sun Feb 19 10:20:58 2017 -0800 ---------------------------------------------------------------------- .../org/apache/zeppelin/livy/BaseLivyInterprereter.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zeppelin/blob/eb88b0b9/livy/src/main/java/org/apache/zeppelin/livy/BaseLivyInterprereter.java ---------------------------------------------------------------------- diff --git a/livy/src/main/java/org/apache/zeppelin/livy/BaseLivyInterprereter.java b/livy/src/main/java/org/apache/zeppelin/livy/BaseLivyInterprereter.java index fd533ab..27e8aaf 100644 --- a/livy/src/main/java/org/apache/zeppelin/livy/BaseLivyInterprereter.java +++ b/livy/src/main/java/org/apache/zeppelin/livy/BaseLivyInterprereter.java @@ -299,8 +299,14 @@ public abstract class BaseLivyInterprereter extends Interpreter { private InterpreterResult getResultFromStatementInfo(StatementInfo stmtInfo, boolean displayAppInfo) { - if (stmtInfo.output.isError()) { + if (stmtInfo.output != null && stmtInfo.output.isError()) { return new InterpreterResult(InterpreterResult.Code.ERROR, stmtInfo.output.evalue); + } else if (stmtInfo.isCancelled()) { + // corner case, output might be null if it is cancelled. + return new InterpreterResult(InterpreterResult.Code.ERROR, "Job is cancelled"); + } else if (stmtInfo.output == null) { + // This case should never happen, just in case + return new InterpreterResult(InterpreterResult.Code.ERROR, "Empty output"); } else { //TODO(zjffdu) support other types of data (like json, image and etc) String result = stmtInfo.output.data.plain_text; @@ -533,6 +539,10 @@ public abstract class BaseLivyInterprereter extends Interpreter { return state.equals("available") || state.equals("cancelled"); } + public boolean isCancelled() { + return state.equals("cancelled"); + } + private static class StatementOutput { public String status; public String execution_count;