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

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


The following commit(s) were added to refs/heads/master by this push:
     new 3869daf  [ZEPPELIN-4615]. Remove annoying exception when shutting down 
interpreter
3869daf is described below

commit 3869daf53441d6ba07fcd25e66ad381f1dc8bdde
Author: Jeff Zhang <zjf...@apache.org>
AuthorDate: Fri Feb 14 11:56:00 2020 +0800

    [ZEPPELIN-4615]. Remove annoying exception when shutting down interpreter
    
    ### What is this PR for?
    
    The reason we see the annoying exception is because we call shutdown rpc in 
a blocking way, so before the rpc call return, the interpreter process is 
terminated. This PR would just wrap the shutdown in one thread in interpreter 
process and would return after the shutdown thread is started.
    
    ### What type of PR is it?
    [Improvement]
    
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-4615
    
    ### How should this be tested?
    * Tested manually.
    
    ### Screenshots (if appropriate)
    
    ### 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 #3645 from zjffdu/ZEPPELIN-4615 and squashes the following commits:
    
    ac6742e34 [Jeff Zhang] [ZEPPELIN-4615]. Remove annoying exception when 
shutting down interpreter
---
 .../remote/RemoteInterpreterServer.java            | 69 ++++++++++++----------
 .../remote/RemoteInterpreterManagedProcess.java    |  1 +
 2 files changed, 38 insertions(+), 32 deletions(-)

diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
index 77fd50b..06be89b 100644
--- 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
+++ 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
@@ -239,48 +239,53 @@ public class RemoteInterpreterServer extends Thread
 
   @Override
   public void shutdown() throws TException {
-    logger.info("Shutting down...");
-    // delete interpreter cluster meta
-    deleteClusterMeta();
+    Thread shutDownThread = new Thread(() -> {
+      logger.info("Shutting down...");
+      // delete interpreter cluster meta
+      deleteClusterMeta();
 
-    if (interpreterGroup != null) {
-      synchronized (interpreterGroup) {
-        for (List<Interpreter> session : interpreterGroup.values()) {
-          for (Interpreter interpreter : session) {
-            try {
-              interpreter.close();
-            } catch (InterpreterException e) {
-              logger.warn("Fail to close interpreter", e);
+      if (interpreterGroup != null) {
+        synchronized (interpreterGroup) {
+          for (List<Interpreter> session : interpreterGroup.values()) {
+            for (Interpreter interpreter : session) {
+              try {
+                interpreter.close();
+              } catch (InterpreterException e) {
+                logger.warn("Fail to close interpreter", e);
+              }
             }
           }
         }
       }
-    }
-    if (!isTest) {
-      SchedulerFactory.singleton().destroy();
-    }
-    server.stop();
+      if (!isTest) {
+        SchedulerFactory.singleton().destroy();
+      }
 
-    // server.stop() does not always finish server.serve() loop
-    // sometimes server.serve() is hanging even after server.stop() call.
-    // this case, need to force kill the process
+      server.stop();
 
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() - startTime < DEFAULT_SHUTDOWN_TIMEOUT &&
-        server.isServing()) {
-      try {
-        Thread.sleep(300);
-      } catch (InterruptedException e) {
-        logger.info("Exception in RemoteInterpreterServer while shutdown, 
Thread.sleep", e);
+      // server.stop() does not always finish server.serve() loop
+      // sometimes server.serve() is hanging even after server.stop() call.
+      // this case, need to force kill the process
+
+      long startTime = System.currentTimeMillis();
+      while (System.currentTimeMillis() - startTime < DEFAULT_SHUTDOWN_TIMEOUT 
&&
+              server.isServing()) {
+        try {
+          Thread.sleep(300);
+        } catch (InterruptedException e) {
+          logger.info("Exception in RemoteInterpreterServer while shutdown, 
Thread.sleep", e);
+        }
       }
-    }
 
-    if (server.isServing()) {
-      logger.info("Force shutting down");
-      System.exit(0);
-    }
+      if (server.isServing()) {
+        logger.info("Force shutting down");
+        System.exit(0);
+      }
+
+      logger.info("Shutting down");
+    }, "Shutdown-Thread");
 
-    logger.info("Shutting down");
+    shutDownThread.start();
   }
 
   public int getPort() {
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
index 3a538df..46a179f 100644
--- 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
+++ 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
@@ -140,6 +140,7 @@ public class RemoteInterpreterManagedProcess extends 
RemoteInterpreterProcess {
       } catch (Exception e) {
         LOGGER.warn("ignore the exception when shutting down", e);
       }
+
       this.interpreterProcessLauncher.stop();
     }
 

Reply via email to