You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2020/08/28 06:25:41 UTC

[karaf] branch master updated: [KARAF-6764] Check for process status zombie in isRunning()

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 10d991b  [KARAF-6764] Check for process status zombie in isRunning()
     new ebc875a  This closes #1136
10d991b is described below

commit 10d991bbf28704fb50b25b04a918e599459fd5ef
Author: Mike Hummel <mi...@mhus.de>
AuthorDate: Sat Jun 13 22:43:09 2020 +0200

    [KARAF-6764] Check for process status zombie in isRunning()
---
 util/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/util/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java b/util/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java
index c79e8ce..6b122a8 100644
--- a/util/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java
+++ b/util/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java
@@ -60,11 +60,11 @@ public class ProcessImpl implements Process {
             return ret == 0;
         } else {
             try {
-                java.lang.Process process = new java.lang.ProcessBuilder("ps", "-p", Integer.toString(pid)).start();
+                java.lang.Process process = new java.lang.ProcessBuilder("ps", "-o", "stat", "-p", Integer.toString(pid)).start();
                 try (BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
                     r.readLine(); // skip headers
                     String s = r.readLine();
-                    boolean running = s != null && s.length() > 0;
+                    boolean running = s != null && s.length() > 0 && s.indexOf("Z") < 0;
                     process.waitFor();
                     return running;
                 }