You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by as...@apache.org on 2016/12/18 02:16:54 UTC

[20/29] hadoop git commit: Revert "HADOOP-13709. Ability to clean up subprocesses spawned by Shell when the process exits. Contributed by Eric Badger"

Revert "HADOOP-13709. Ability to clean up subprocesses spawned by Shell when the process exits. Contributed by Eric Badger"

This reverts commit 9947aeb60c3dd075544866fd6e4dab0ad8b4afa2.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/169bfc09
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/169bfc09
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/169bfc09

Branch: refs/heads/YARN-5085
Commit: 169bfc09037595610eb000fd3a0cb63cc9deca06
Parents: f92913c
Author: Jason Lowe <jl...@apache.org>
Authored: Thu Dec 15 20:30:45 2016 +0000
Committer: Jason Lowe <jl...@apache.org>
Committed: Thu Dec 15 20:51:24 2016 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/hadoop/util/Shell.java | 24 -------
 .../java/org/apache/hadoop/util/TestShell.java  | 68 --------------------
 2 files changed, 92 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/169bfc09/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java
index 83877b7..5fc9869 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java
@@ -26,11 +26,9 @@ import java.io.InputStream;
 import java.io.InterruptedIOException;
 import java.nio.charset.Charset;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
-import java.util.WeakHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -50,8 +48,6 @@ import org.slf4j.LoggerFactory;
 @InterfaceAudience.Public
 @InterfaceStability.Evolving
 public abstract class Shell {
-  private static final Map <Process, Object> CHILD_PROCESSES =
-      Collections.synchronizedMap(new WeakHashMap<Process, Object>());
   public static final Logger LOG = LoggerFactory.getLogger(Shell.class);
 
   /**
@@ -920,7 +916,6 @@ public abstract class Shell {
     } else {
       process = builder.start();
     }
-    CHILD_PROCESSES.put(process, null);
 
     if (timeOutInterval > 0) {
       timeOutTimer = new Timer("Shell command timeout");
@@ -1017,7 +1012,6 @@ public abstract class Shell {
         LOG.warn("Error while closing the error stream", ioe);
       }
       process.destroy();
-      CHILD_PROCESSES.remove(process);
       lastTime = Time.monotonicNow();
     }
   }
@@ -1316,22 +1310,4 @@ public abstract class Shell {
       }
     }
   }
-
-  /**
-   * Static method to destroy all running <code>Shell</code> processes
-   * Iterates through a list of all currently running <code>Shell</code>
-   * processes and destroys them one by one. This method is thread safe and
-   * is intended to be used in a shutdown hook.
-   */
-  public static void destroyAllProcesses() {
-    synchronized (CHILD_PROCESSES) {
-      for (Process key : CHILD_PROCESSES.keySet()) {
-        Process process = key;
-        if (key != null) {
-          process.destroy();
-        }
-      }
-      CHILD_PROCESSES.clear();
-    }
-  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/169bfc09/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
index 5cc011b..67903f7 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestShell.java
@@ -17,7 +17,6 @@
  */
 package org.apache.hadoop.util;
 
-import com.google.common.base.Supplier;
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.security.alias.AbstractJavaKeyStoreProvider;
 import org.junit.Assert;
@@ -472,71 +471,4 @@ public class TestShell extends Assert {
     assertEquals("'foo'\\''bar'", Shell.bashQuote("foo'bar"));
     assertEquals("''\\''foo'\\''bar'\\'''", Shell.bashQuote("'foo'bar'"));
   }
-
-  @Test(timeout=120000)
-  public void testShellKillAllProcesses() throws Throwable {
-    Assume.assumeFalse(WINDOWS);
-    StringBuffer sleepCommand = new StringBuffer();
-    sleepCommand.append("sleep 200");
-    String[] shellCmd = {"bash", "-c", sleepCommand.toString()};
-    final ShellCommandExecutor shexc1 = new ShellCommandExecutor(shellCmd);
-    final ShellCommandExecutor shexc2 = new ShellCommandExecutor(shellCmd);
-
-    Thread shellThread1 = new Thread() {
-      @Override
-      public void run() {
-        try {
-          shexc1.execute();
-        } catch(IOException ioe) {
-          //ignore IOException from thread interrupt
-        }
-      }
-    };
-    Thread shellThread2 = new Thread() {
-      @Override
-      public void run() {
-        try {
-          shexc2.execute();
-        } catch(IOException ioe) {
-          //ignore IOException from thread interrupt
-        }
-      }
-    };
-
-    shellThread1.start();
-    shellThread2.start();
-    GenericTestUtils.waitFor(new Supplier<Boolean>() {
-      @Override
-      public Boolean get() {
-        return shexc1.getProcess() != null;
-      }
-    }, 10, 10000);
-
-    GenericTestUtils.waitFor(new Supplier<Boolean>() {
-      @Override
-      public Boolean get() {
-        return shexc2.getProcess() != null;
-      }
-    }, 10, 10000);
-
-    Shell.destroyAllProcesses();
-    final Process process1 = shexc1.getProcess();
-    final Process process2 = shexc2.getProcess();
-    GenericTestUtils.waitFor(new Supplier<Boolean>() {
-      @Override
-      public Boolean get() {
-        return !process1.isAlive();
-      }
-    }, 10, 10000);
-
-    GenericTestUtils.waitFor(new Supplier<Boolean>() {
-      @Override
-      public Boolean get() {
-        return !process2.isAlive();
-      }
-    }, 10, 10000);
-
-    assertFalse("Process 1 was not killed within timeout", process1.isAlive());
-    assertFalse("Process 2 was not killed within timeout", process2.isAlive());
-  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org