Repository: incubator-gearpump Updated Branches: refs/heads/master 519a19500 -> 8cd0f0c9b
[GEARPUMP-282] Allow user to configure wait duration for a running app Author: huafengw <[email protected]> Closes #160 from huafengw/fix282. Project: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/commit/8cd0f0c9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/tree/8cd0f0c9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/diff/8cd0f0c9 Branch: refs/heads/master Commit: 8cd0f0c9b31944d892972178365871b8134b1619 Parents: 519a195 Author: huafengw <[email protected]> Authored: Fri Feb 24 19:37:32 2017 +0800 Committer: manuzhang <[email protected]> Committed: Fri Feb 24 19:37:49 2017 +0800 ---------------------------------------------------------------------- .../gearpump/cluster/client/RunningApplication.scala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/8cd0f0c9/core/src/main/scala/org/apache/gearpump/cluster/client/RunningApplication.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/cluster/client/RunningApplication.scala b/core/src/main/scala/org/apache/gearpump/cluster/client/RunningApplication.scala index d62356a..103df01 100644 --- a/core/src/main/scala/org/apache/gearpump/cluster/client/RunningApplication.scala +++ b/core/src/main/scala/org/apache/gearpump/cluster/client/RunningApplication.scala @@ -25,6 +25,8 @@ import org.apache.gearpump.cluster.MasterToClient._ import org.apache.gearpump.cluster.client.RunningApplication._ import org.apache.gearpump.util.{ActorUtil, LogUtil} import org.slf4j.Logger +import java.time.Duration +import java.util.concurrent.TimeUnit import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future @@ -48,8 +50,12 @@ class RunningApplication(val appId: Int, master: ActorRef, timeout: Timeout) { * If failed, an exception will be thrown out */ def waitUntilFinish(): Unit = { + this.waitUntilFinish(INF_DURATION) + } + + def waitUntilFinish(duration: Duration): Unit = { val result = ActorUtil.askActor[ApplicationResult](master, - RegisterAppResultListener(appId), INF_TIMEOUT) + RegisterAppResultListener(appId), new Timeout(duration.getSeconds, TimeUnit.SECONDS)) result match { case failed: ApplicationFailed => throw failed.error @@ -71,6 +77,6 @@ class RunningApplication(val appId: Int, master: ActorRef, timeout: Timeout) { object RunningApplication { private val LOG: Logger = LogUtil.getLogger(getClass) // This magic number is derived from Akka's configuration, which is the maximum delay - private val INF_TIMEOUT = new Timeout(2147482 seconds) + private val INF_DURATION = Duration.ofSeconds(2147482) }
