This is an automated email from the ASF dual-hosted git repository.

zjffdu pushed a commit to branch branch-0.10
in repository https://gitbox.apache.org/repos/asf/zeppelin.git

commit 88bf9b135ee858d1b929ac663f6381374e7e6e70
Author: Jeff Zhang <zjf...@apache.org>
AuthorDate: Tue Dec 7 23:56:50 2021 +0800

    [ZEPPELIN-5604] Interpreter scheduler may not be shutdown properly
---
 .github/workflows/core.yml                         | 21 +++++++++++++---
 .../interpreter/ManagedInterpreterGroup.java       | 29 +++++++++++-----------
 2 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml
index 29c2a0b..6757179 100644
--- a/.github/workflows/core.yml
+++ b/.github/workflows/core.yml
@@ -62,6 +62,8 @@ jobs:
           channel-priority: strict
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
           conda list
           conda info
@@ -103,6 +105,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: verify interpreter
         run: mvn verify -DskipRat -am -pl 
.,zeppelin-interpreter,zeppelin-interpreter-shaded,${INTERPRETERS} -Pscala-2.10 
-B
@@ -136,6 +140,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: |
@@ -211,6 +217,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: |
@@ -252,6 +260,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: |
@@ -290,6 +300,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: |
@@ -331,6 +343,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: |
@@ -372,6 +386,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: mvn install -DskipTests -DskipRat -pl 
spark-submit,spark/spark-dependencies -am -Pspark-3.1 -Pspark-scala-2.12 
-Phadoop2 -B
@@ -412,6 +428,8 @@ jobs:
           auto-activate-base: false
       - name: Make IRkernel available to Jupyter
         run: |
+          R -e "install.packages('devtools', repos = 
'http://cran.us.r-project.org')"
+          R -e "devtools::install_github('IRkernel/IRkernel')"
           R -e "IRkernel::installspec()"
       - name: install environment
         run: mvn install -DskipTests -DskipRat -pl 
spark-submit,spark/spark-dependencies -am -Pspark-3.2 -Pspark-scala-2.12 
-Phadoop2 -B
@@ -446,9 +464,6 @@ jobs:
           environment-file: testing/env_python_3_with_R.yml
           python-version: 3.7
           auto-activate-base: false
-      - name: Make IRkernel available to Jupyter
-        run: |
-          R -e "IRkernel::installspec()"
       - name: install environment
         run: |
           mvn install -DskipTests -DskipRat -pl livy -am  -B
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroup.java
 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroup.java
index fb17542..51aeab7 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroup.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroup.java
@@ -144,29 +144,28 @@ public class ManagedInterpreterGroup extends 
InterpreterGroup {
 
   private void closeInterpreter(Interpreter interpreter) {
     Scheduler scheduler = interpreter.getScheduler();
-
-    if (Boolean.parseBoolean(
-            interpreter.getProperty("zeppelin.interpreter.close.cancel_job", 
"true"))) {
-      for (final Job job : scheduler.getAllJobs()) {
-        if (!job.isTerminated()) {
-          job.abort();
-          job.setStatus(Job.Status.ABORT);
-          LOGGER.info("Job {} aborted ", job.getJobName());
+    try {
+      if (Boolean.parseBoolean(
+              interpreter.getProperty("zeppelin.interpreter.close.cancel_job", 
"true"))) {
+        for (final Job job : scheduler.getAllJobs()) {
+          if (!job.isTerminated()) {
+            job.abort();
+            job.setStatus(Job.Status.ABORT);
+            LOGGER.info("Job {} aborted ", job.getJobName());
+          }
         }
+      } else {
+        LOGGER.info("Keep job running while closing interpreter: {}", 
interpreter.getClassName());
       }
-    } else {
-      LOGGER.info("Keep job running while closing interpreter: {}", 
interpreter.getClassName());
-    }
 
-    try {
       LOGGER.info("Trying to close interpreter {}", 
interpreter.getClassName());
       interpreter.close();
     } catch (InterpreterException e) {
       LOGGER.warn("Fail to close interpreter {}", interpreter.getClassName(), 
e);
+    } finally {
+      //TODO(zjffdu) move the close of schedule to Interpreter
+      SchedulerFactory.singleton().removeScheduler(scheduler.getName());
     }
-
-    //TODO(zjffdu) move the close of schedule to Interpreter
-    SchedulerFactory.singleton().removeScheduler(scheduler.getName());
   }
 
   public synchronized List<Interpreter> getOrCreateSession(String user, String 
sessionId) {

Reply via email to