Repository: karaf Updated Branches: refs/heads/master b03bd9620 -> 435982bfc
[KARAF-5420] Bad console behavior when dealing with the input stream for piped commands Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/435982bf Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/435982bf Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/435982bf Branch: refs/heads/master Commit: 435982bfcd648523b9705c966335d31e9fafc7e9 Parents: b03bd96 Author: Guillaume Nodet <[email protected]> Authored: Thu Oct 12 13:06:30 2017 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Thu Oct 12 15:27:46 2017 +0200 ---------------------------------------------------------------------- shell/commands/pom.xml | 4 ++++ .../org/apache/karaf/shell/commands/impl/ExecuteAction.java | 7 +++++-- .../java/org/apache/karaf/util/process/PumpStreamHandler.java | 2 +- .../main/java/org/apache/karaf/util/process/StreamPumper.java | 4 ++-- 4 files changed, 12 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/shell/commands/pom.xml ---------------------------------------------------------------------- diff --git a/shell/commands/pom.xml b/shell/commands/pom.xml index 590fcab..a491760 100644 --- a/shell/commands/pom.xml +++ b/shell/commands/pom.xml @@ -43,6 +43,10 @@ <artifactId>org.apache.karaf.shell.core</artifactId> </dependency> <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.gogo.runtime</artifactId> + </dependency> + <dependency> <groupId>org.apache.karaf</groupId> <artifactId>org.apache.karaf.util</artifactId> <scope>provided</scope> http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java ---------------------------------------------------------------------- diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java index 1c7ed6a..f059e7a 100644 --- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java +++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java @@ -48,9 +48,12 @@ public class ExecuteAction implements Action { ProcessBuilder builder = new ProcessBuilder(args) .directory(session.currentDir().toFile()); - PumpStreamHandler handler = new PumpStreamHandler(System.in, System.out, System.err, "Command" + args.toString()); + org.apache.felix.service.command.Process cp = org.apache.felix.service.command.Process.Utils.current(); - log.debug("Executing: {}", builder.command()); + String cmd = String.join(" ", args); + PumpStreamHandler handler = new PumpStreamHandler(cp.in(), cp.out(), cp.err(), "Command '" + cmd + "'"); + + log.debug("Executing: {}", cmd); Process p = builder.start(); handler.attach(p); http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java ---------------------------------------------------------------------- diff --git a/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java b/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java index 6e2eeb2..0d3c83d 100644 --- a/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java +++ b/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java @@ -266,7 +266,7 @@ public class PumpStreamHandler { assert out != null; StreamPumper pumper = new StreamPumper(in, out, closeWhenExhausted); - pumper.setNonBlocking(true); +// pumper.setNonBlocking(true); pumper.setAutoflush(true); return pumper; } http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java ---------------------------------------------------------------------- diff --git a/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java b/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java index 9068fba..45ece7b 100644 --- a/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java +++ b/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java @@ -114,7 +114,7 @@ public class StreamPumper implements Runnable { final byte[] buf = new byte[bufferSize]; - int length; + int length = 0; try { while (true) { if (nonBlocking) { @@ -143,7 +143,7 @@ public class StreamPumper implements Runnable { } boolean finish; synchronized (this) { - finish = this.finish; + finish = this.finish || length < 0; } if (finish) { break;
