SLIDER-201 closing process input stream on fork
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b6a3b541 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b6a3b541 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b6a3b541 Branch: refs/heads/releases/slider-0.60 Commit: b6a3b541ea5ae7d402fb3b90a6aa0245c44b3b34 Parents: 5d25442 Author: Steve Loughran <[email protected]> Authored: Fri Nov 7 17:24:02 2014 +0000 Committer: Steve Loughran <[email protected]> Committed: Sat Nov 8 21:53:38 2014 +0000 ---------------------------------------------------------------------- .../apache/slider/server/services/workflow/LongLivedProcess.java | 4 ++++ 1 file changed, 4 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6a3b541/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java b/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java index 57b989c..cebb035 100644 --- a/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java +++ b/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java @@ -51,6 +51,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * Key Features: * <ol> * <li>Output is streamed to the output logger provided</li>. + * <li>the input stream is closed as soon as the process starts.</li> * <li>The most recent lines of output are saved to a linked list</li>. * <li>A synchronous callback, {@link LongLivedProcessLifecycleEvent}, is raised on the start * and finish of a process.</li> @@ -323,6 +324,8 @@ public class LongLivedProcess implements Runnable { lifecycleCallback.onProcessStarted(this); } try { + //close stdin for the process + IOUtils.closeStream(process.getOutputStream()); exitCode = process.waitFor(); } catch (InterruptedException e) { LOG.debug("Process wait interrupted -exiting thread", e); @@ -416,6 +419,7 @@ public class LongLivedProcess implements Runnable { } return getRecentOutput(); } + /** * add the recent line to the list of recent lines; deleting * an earlier on if the limit is reached.
