You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by zj...@apache.org on 2019/02/03 02:56:33 UTC

[zeppelin] branch master updated: IPythonInterpreter delete temp file and close stream

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 a2a6215  IPythonInterpreter delete temp file and close stream
a2a6215 is described below

commit a2a621595afcc65e965382d5a0412ade0e299610
Author: yx91490 <yx...@126.com>
AuthorDate: Tue Jan 22 13:47:38 2019 +0800

    IPythonInterpreter delete temp file and close stream
    
    ### What is this PR for?
    delete temporary file  and  close inputstream in IPythonInterpreter.checkIPythonPrerequisite()
    
    ### What type of PR is it?
    [Bug Fix]
    
    ### Todos
    *no
    
    ### What is the Jira issue?
    * https://jira.apache.org/jira/browse/ZEPPELIN-3910, [ZEPPELIN-3910]
    
    ### How should this be tested?
    * manual.
    
    ### 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: yx91490 <yx...@126.com>
    
    Closes #3287 from yx91490/ipy_tmp_file and squashes the following commits:
    
    c811e3736 [yx91490] delete temp file and close stream
---
 .../apache/zeppelin/python/IPythonInterpreter.java | 48 +++++++++++++---------
 1 file changed, 28 insertions(+), 20 deletions(-)

diff --git a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
index 3c646ae..b357e88 100644
--- a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
+++ b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
@@ -161,38 +161,46 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand
    */
   public String checkIPythonPrerequisite(String pythonExec) {
     ProcessBuilder processBuilder = new ProcessBuilder(pythonExec, "-m", "pip", "freeze");
+    File stderrFile = null;
+    File stdoutFile = null;
     try {
-      File stderrFile = File.createTempFile("zeppelin", ".txt");
+      stderrFile = File.createTempFile("zeppelin", ".txt");
       processBuilder.redirectError(stderrFile);
-      File stdoutFile = File.createTempFile("zeppelin", ".txt");
+      stdoutFile = File.createTempFile("zeppelin", ".txt");
       processBuilder.redirectOutput(stdoutFile);
 
       Process proc = processBuilder.start();
       int ret = proc.waitFor();
       if (ret != 0) {
-        return "Fail to run pip freeze.\n" +
-            IOUtils.toString(new FileInputStream(stderrFile));
-      }
-      String freezeOutput = IOUtils.toString(new FileInputStream(stdoutFile));
-      if (!freezeOutput.contains("jupyter-client=")) {
-        return "jupyter-client is not installed.";
-      }
-      if (!freezeOutput.contains("ipykernel=")) {
-        return "ipykernel is not installed";
-      }
-      if (!freezeOutput.contains("ipython=")) {
-        return "ipython is not installed";
-      }
-      if (!freezeOutput.contains("grpcio=")) {
-        return "grpcio is not installed";
+        try (FileInputStream in = new FileInputStream(stderrFile)) {
+          return "Fail to run pip freeze.\n" + IOUtils.toString(in);
+        }
       }
-      if (!freezeOutput.contains("protobuf=")) {
-        return "protobuf is not installed";
+      try (FileInputStream in = new FileInputStream(stdoutFile)) {
+        String freezeOutput = IOUtils.toString(in);
+        if (!freezeOutput.contains("jupyter-client=")) {
+          return "jupyter-client is not installed.";
+        }
+        if (!freezeOutput.contains("ipykernel=")) {
+          return "ipykernel is not installed";
+        }
+        if (!freezeOutput.contains("ipython=")) {
+          return "ipython is not installed";
+        }
+        if (!freezeOutput.contains("grpcio=")) {
+          return "grpcio is not installed";
+        }
+        if (!freezeOutput.contains("protobuf=")) {
+          return "protobuf is not installed";
+        }
+        LOGGER.info("IPython prerequisite is met");
       }
-      LOGGER.info("IPython prerequisite is met");
     } catch (Exception e) {
       LOGGER.warn("Fail to checkIPythonPrerequisite", e);
       return "Fail to checkIPythonPrerequisite: " + ExceptionUtils.getStackTrace(e);
+    } finally {
+      FileUtils.deleteQuietly(stderrFile);
+      FileUtils.deleteQuietly(stdoutFile);
     }
     return "";
   }