You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2017/09/18 23:56:42 UTC
[incubator-openwhisk] branch master updated: Revert "Use an
asynchronous process runner to spawn container commands." (#2769)
This is an automated email from the ASF dual-hosted git repository.
rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git
The following commit(s) were added to refs/heads/master by this push:
new c5cf96e Revert "Use an asynchronous process runner to spawn container commands." (#2769)
c5cf96e is described below
commit c5cf96e399e6524f340cb21e1ccac67da0100c55
Author: Markus Thömmes <ma...@me.com>
AuthorDate: Tue Sep 19 01:56:40 2017 +0200
Revert "Use an asynchronous process runner to spawn container commands." (#2769)
This reverts commit 6b0c03725b43d5454dc07ccc51318675b6b0905e.
---
core/invoker/build.gradle | 2 -
.../core/containerpool/docker/ProcessRunner.scala | 49 ++++++++--------------
2 files changed, 18 insertions(+), 33 deletions(-)
diff --git a/core/invoker/build.gradle b/core/invoker/build.gradle
index d60ea40..14a9191 100644
--- a/core/invoker/build.gradle
+++ b/core/invoker/build.gradle
@@ -13,8 +13,6 @@ repositories {
dependencies {
compile "org.scala-lang:scala-library:${gradle.scala.version}"
compile project(':common:scala')
-
- compile "com.zaxxer:nuprocess:1.1.2"
}
tasks.withType(ScalaCompile) {
diff --git a/core/invoker/src/main/scala/whisk/core/containerpool/docker/ProcessRunner.scala b/core/invoker/src/main/scala/whisk/core/containerpool/docker/ProcessRunner.scala
index 8540203..f8139b4 100644
--- a/core/invoker/src/main/scala/whisk/core/containerpool/docker/ProcessRunner.scala
+++ b/core/invoker/src/main/scala/whisk/core/containerpool/docker/ProcessRunner.scala
@@ -17,13 +17,11 @@
package whisk.core.containerpool.docker
-import java.nio.ByteBuffer
-
-import akka.util.ByteString
-import com.zaxxer.nuprocess.{NuAbstractProcessHandler, NuProcessBuilder}
-
-import scala.collection.JavaConverters._
-import scala.concurrent.{ExecutionContext, Future, Promise}
+import scala.collection.mutable
+import scala.concurrent.ExecutionContext
+import scala.concurrent.Future
+import scala.concurrent.blocking
+import scala.sys.process._
trait ProcessRunner {
@@ -37,30 +35,19 @@ trait ProcessRunner {
* @param args command to be run including arguments
* @return a future completing according to the command's exit code
*/
- protected def executeProcess(args: String*)(implicit ec: ExecutionContext): Future[String] = {
- val promise = Promise[String]()
- val pb: NuProcessBuilder = new NuProcessBuilder(args.asJava)
- pb.setProcessListener(new NuAbstractProcessHandler {
- var out = ByteString.empty
- var err = ByteString.empty
-
- override def onExit(code: Int): Unit = code match {
- case 0 => promise.success(out.utf8String.trim)
- case _ => promise.failure(ProcessRunningException(code, out.utf8String.trim, err.utf8String.trim))
- }
-
- override def onStderr(buffer: ByteBuffer, closed: Boolean) = {
- err = err ++ ByteString.fromByteBuffer(buffer)
- }
-
- override def onStdout(buffer: ByteBuffer, closed: Boolean): Unit = {
- out = out ++ ByteString.fromByteBuffer(buffer)
- }
- })
-
- pb.start()
- promise.future
- }
+ protected def executeProcess(args: String*)(implicit ec: ExecutionContext) =
+ Future(blocking {
+ val out = new mutable.ListBuffer[String]
+ val err = new mutable.ListBuffer[String]
+ val exitCode = args ! ProcessLogger(o => out += o, e => err += e)
+
+ (exitCode, out.mkString("\n"), err.mkString("\n"))
+ }).flatMap {
+ case (0, stdout, _) =>
+ Future.successful(stdout)
+ case (code, stdout, stderr) =>
+ Future.failed(ProcessRunningException(code, stdout, stderr))
+ }
}
case class ProcessRunningException(exitCode: Int, stdout: String, stderr: String)
--
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].