diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java index 1beebde6d82..9591a7fa926 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java @@ -519,6 +519,9 @@ public void setPropertyAndRestart(String id, InterpreterOption option, synchronized (interpreterSettings) { InterpreterSetting intpsetting = interpreterSettings.get(id); if (intpsetting != null) { + + stopJobAllInterpreter(intpsetting); + intpsetting.getInterpreterGroup().close(); intpsetting.getInterpreterGroup().destroy(); @@ -541,20 +544,7 @@ public void restart(String id) { InterpreterSetting intpsetting = interpreterSettings.get(id); if (intpsetting != null) { - for (Interpreter intp : intpsetting.getInterpreterGroup()) { - for (Job job : intp.getScheduler().getJobsRunning()) { - job.abort(); - job.setStatus(Status.ABORT); - logger.info("Job " + job.getJobName() + " aborted "); - } - - for (Job job : intp.getScheduler().getJobsWaiting()) { - job.abort(); - job.setStatus(Status.ABORT); - logger.info("Job " + job.getJobName() + " aborted "); - } - } - + stopJobAllInterpreter(intpsetting); intpsetting.getInterpreterGroup().close(); intpsetting.getInterpreterGroup().destroy(); @@ -570,6 +560,22 @@ public void restart(String id) { } } + private void stopJobAllInterpreter(InterpreterSetting intpsetting) { + if (intpsetting != null) { + for (Interpreter intp : intpsetting.getInterpreterGroup()) { + for (Job job : intp.getScheduler().getJobsRunning()) { + job.abort(); + job.setStatus(Status.ABORT); + logger.info("Job " + job.getJobName() + " aborted "); + } + for (Job job : intp.getScheduler().getJobsWaiting()) { + job.abort(); + job.setStatus(Status.ABORT); + logger.info("Job " + job.getJobName() + " aborted "); + } + } + } + } public void close() { List closeThreads = new LinkedList();