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:26:52 UTC

[karaf] branch karaf-4.2.x 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 karaf-4.2.x
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/karaf-4.2.x by this push:
     new 4739ae8  [KARAF-6764] Check for process status zombie in isRunning()
4739ae8 is described below

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

    [KARAF-6764] Check for process status zombie in isRunning()
    
    (cherry picked from commit 10d991bbf28704fb50b25b04a918e599459fd5ef)
---
 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 c500cb9..6d8801b 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;
                 }