Repository: incubator-zeppelin Updated Branches: refs/heads/master ea9f13930 -> d5d918f52
[ZEPPELIN-691] Enable user to change shell interpreter command timeout property ### What is this PR for? Although Shell Interpreter has already had [command timeout property](https://github.com/apache/incubator-zeppelin/blob/master/shell/src/main/java/org/apache/zeppelin/shell/ShellInterpreter.java#L49), users can not change this property via Zeppelin UI. So I added some code lines to `ShellInterpreter.java` so that users can change this value at the interpreter setting tab. ### What type of PR is it? Improvement ### Todos * [x] - Enable user to change shell interpreter command timeout property * [x] - Fix a dead link in `interpreter.java` ### Is there a relevant Jira issue? [ZEPPELIN-691](https://issues.apache.org/jira/browse/ZEPPELIN-691) ### How should this be tested? After applying this PR, you can make `%sh` interpreter at the Zeppelin interpreter setting section. 1. Change `shell.command.timeout.millisecs` 600000(default value) -> 5000 so that you can check quickly 2. Run * **Success Case** ``` %sh date && sleep 3 && date ``` then you can get a result as below ``` Mon Feb 22 18:25:00 KST 2016 Mon Feb 22 18:25:03 KST 2016 ExitValue: 143 ``` * **Error Case(because of timeout property)** ``` %sh date && sleep 6 && date ``` then you can get a result as below ``` Mon Feb 22 18:25:00 KST 2016 Paragraph received a SIGTERM. ExitValue: 143 ``` ### Screenshots (if appropriate) **Before**  **After**  ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: AhyoungRyu <[email protected]> Closes #738 from AhyoungRyu/shell-timeout and squashes the following commits: f98ff16 [AhyoungRyu] Move comma to the upper line 3b4faec [AhyoungRyu] Fix reference link in interpreter.java b16211d [AhyoungRyu] Enable user to change shell interpreter timeout property Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/d5d918f5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/d5d918f5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/d5d918f5 Branch: refs/heads/master Commit: d5d918f52c4b5e3d4e7103546f3fff788c8e76b6 Parents: ea9f139 Author: AhyoungRyu <[email protected]> Authored: Mon Feb 22 22:59:24 2016 +0900 Committer: Lee moon soo <[email protected]> Committed: Thu Feb 25 15:14:20 2016 -0800 ---------------------------------------------------------------------- .../apache/zeppelin/shell/ShellInterpreter.java | 23 +++++++++++++++++--- .../zeppelin/interpreter/Interpreter.java | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d5d918f5/shell/src/main/java/org/apache/zeppelin/shell/ShellInterpreter.java ---------------------------------------------------------------------- diff --git a/shell/src/main/java/org/apache/zeppelin/shell/ShellInterpreter.java b/shell/src/main/java/org/apache/zeppelin/shell/ShellInterpreter.java index 9a0434f..6133c32 100644 --- a/shell/src/main/java/org/apache/zeppelin/shell/ShellInterpreter.java +++ b/shell/src/main/java/org/apache/zeppelin/shell/ShellInterpreter.java @@ -32,6 +32,7 @@ import org.apache.commons.exec.Executor; import org.apache.commons.exec.PumpStreamHandler; import org.apache.zeppelin.interpreter.Interpreter; import org.apache.zeppelin.interpreter.InterpreterContext; +import org.apache.zeppelin.interpreter.InterpreterPropertyBuilder; import org.apache.zeppelin.interpreter.InterpreterResult; import org.apache.zeppelin.interpreter.InterpreterResult.Code; import org.apache.zeppelin.scheduler.Job; @@ -46,10 +47,22 @@ import org.slf4j.LoggerFactory; public class ShellInterpreter extends Interpreter { Logger logger = LoggerFactory.getLogger(ShellInterpreter.class); private static final String EXECUTOR_KEY = "executor"; - int commandTimeOut = 600000; + public static final String SHELL_COMMAND_TIMEOUT = "shell.command.timeout.millisecs"; + public static final String DEFAULT_COMMAND_TIMEOUT = "600000"; + int commandTimeOut; static { - Interpreter.register("sh", ShellInterpreter.class.getName()); + Interpreter.register( + "sh", + "sh", + ShellInterpreter.class.getName(), + new InterpreterPropertyBuilder() + .add( + SHELL_COMMAND_TIMEOUT, + DEFAULT_COMMAND_TIMEOUT, + "Shell command time out in millisecs. Default = 600000") + .build() + ); } public ShellInterpreter(Properties property) { @@ -57,7 +70,11 @@ public class ShellInterpreter extends Interpreter { } @Override - public void open() {} + public void open() { + logger.info("Command timeout is set as:", SHELL_COMMAND_TIMEOUT); + + commandTimeOut = Integer.valueOf(getProperty(SHELL_COMMAND_TIMEOUT)); + } @Override public void close() {} http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/d5d918f5/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/Interpreter.java ---------------------------------------------------------------------- diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/Interpreter.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/Interpreter.java index 014b13e..a8c4508 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/Interpreter.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/Interpreter.java @@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory; * If you want to implement new Zeppelin interpreter, extend this class * * Please see, - * http://zeppelin.incubator.apache.org/docs/development/writingzeppelininterpreter.html + * https://zeppelin.incubator.apache.org/docs/latest/development/writingzeppelininterpreter.html * * open(), close(), interpreter() is three the most important method you need to implement. * cancel(), getProgress(), completion() is good to have
