actually, there is a way to reproduce the problem (maybe not a very suitable example): (1)modify dereference() in *RemoteInterpreterProcess.java* like this:
*diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterProcess.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterProcess.java* *index 534af27..e02b16a 100644* *--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterProcess.java* *+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterProcess.java* *@@ -146,7 +146,8 @@* public class RemoteInterpreterProcess implements ExecuteResultHandler { public int dereference() { synchronized (referenceCount) { int r = referenceCount.decrementAndGet(); *- if (r == 0) {* *+ //if (r == 0) {* *+ if (false) {* logger.info("shutdown interpreter process"); remoteInterpreterEventPoller.shutdown(); (2)restart this interpreter in interpreter settings [image: 内嵌图片 1] (3)run spark paragraph: [image: 内嵌图片 2] 2015-09-09 23:13 GMT+08:00 moon soo Lee <m...@apache.org>: > If there're some way to reproduce the problem it'll help a lot. > Let me investigate more on this problem. > > I'm working on improving interpreter process restart. > > https://github.com/Leemoonsoo/incubator-zeppelin/commit/3200b9aac26d394a67d496c3b209eb3cda046c4a > Once i know how to reproduce "Scheduler already terminated Exception", > I'll make pullrequest together with this improvement. > > Thanks, > moon > > > On Mon, Sep 7, 2015 at 5:44 AM linxi zeng <linxizeng0...@gmail.com> wrote: > >> hi, moon: >> >> After change some settings and restarting interpreter, the scheduler of >> interpreter will be terminated and the RemoteInterpreterServer process >> should be stopped too. But if the RemoteInterpreterServer didn't shutdown >> as expected, an exception named "Scheduler already terminated" will be >> thrown when we run paragraphs using this interpreter (such as spark). Then >> restart the zeppelin server seems the only way to solve the problem. >> >> This problem has already happen several times, but still have no idea how >> to stable reproduct it. I was thinking that if we can restart the >> RemoteInterpreterServer when we catch this Exception? >> >> Do you have any idea to solve this problem? >> >> >> By the way, The detail error info is like that: >> >> INFO [2015-09-06 10:21:47,487] ({qtp1633200777-7462} >> NotebookServer.java[onMessage]:112) - RECEIVE << RUN_PARAGRAPH >> INFO [2015-09-06 10:21:47,493] ({qtp1633200777-7462} >> NotebookServer.java[broadcast]:264) - SEND >> NOTE >> ERROR [2015-09-06 10:21:47,495] ({qtp1633200777-7462} >> NotebookServer.java[runParagraph]:640) - Exception from run >> java.lang.RuntimeException: Scheduler already terminated >> at >> org.apache.zeppelin.scheduler.RemoteScheduler.submit(RemoteScheduler.java:124) >> at org.apache.zeppelin.notebook.Note.run(Note.java:282) >> at >> org.apache.zeppelin.socket.NotebookServer.runParagraph(NotebookServer.java:638) >> at >> org.apache.zeppelin.socket.NotebookServer.onMessage(NotebookServer.java:137) >> at >> org.apache.zeppelin.socket.NotebookSocket.onMessage(NotebookSocket.java:56) >> at >> org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameHandler.onFrame(WebSocketConnectionRFC6455.java:835) >> at >> org.eclipse.jetty.websocket.WebSocketParserRFC6455.parseNext(WebSocketParserRFC6455.java:349) >> at >> org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:225) >> at >> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667) >> at >> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) >> at >> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) >> at >> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) >> at java.lang.Thread.run(Thread.java:745) >> >>