Repository: hadoop Updated Branches: refs/heads/branch-2 236dbe348 -> 81be6644c
Revert "HADOOP-13709. Ability to clean up subprocesses spawned by Shell when the process exits. Contributed by Eric Badger" This reverts commit 0af67aa20014b355d43d74d52650039cf95c0a54. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/81be6644 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/81be6644 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/81be6644 Branch: refs/heads/branch-2 Commit: 81be6644ceeac095161977b5ec96cba9c6f6e989 Parents: 236dbe3 Author: Jason Lowe <jl...@apache.org> Authored: Thu Dec 15 14:52:43 2016 +0000 Committer: Jason Lowe <jl...@apache.org> Committed: Thu Dec 15 14:52:43 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/81be6644/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 55f92d6..b6302ea 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); /** @@ -924,7 +920,6 @@ public abstract class Shell { } else { process = builder.start(); } - CHILD_PROCESSES.put(process, null); if (timeOutInterval > 0) { timeOutTimer = new Timer("Shell command timeout"); @@ -1021,7 +1016,6 @@ public abstract class Shell { LOG.warn("Error while closing the error stream", ioe); } process.destroy(); - CHILD_PROCESSES.remove(process); lastTime = Time.monotonicNow(); } } @@ -1320,22 +1314,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/81be6644/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 0845992..3ef6fb1 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; @@ -477,71 +476,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-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org