Repository: reef Updated Branches: refs/heads/master 322aec5bf -> 02ddd4a41
[REEF-1379] Add a fluid interface to EvaluatorRequestor This PR: - extends `EvaluatorRequest.Builder` under `EvaluatorRequestorImpl` with a `submit()` method - enables the newly implemented builder to be created with the `newRequest()` method - changes examples under `reef-examples` to use the new method JIRA: [REEF-1379](https://issues.apache.org/jira/browse/REEF-1379) PR: This closes #993 Project: http://git-wip-us.apache.org/repos/asf/reef/repo Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/02ddd4a4 Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/02ddd4a4 Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/02ddd4a4 Branch: refs/heads/master Commit: 02ddd4a41938f537f27759e9f58809d603bda3fb Parents: 322aec5 Author: Won Wook SONG <[email protected]> Authored: Sat May 7 04:51:47 2016 +0900 Committer: Markus Weimer <[email protected]> Committed: Wed May 11 18:10:09 2016 -0700 ---------------------------------------------------------------------- .../reef/driver/evaluator/EvaluatorRequest.java | 31 +++++++++++--------- .../driver/evaluator/EvaluatorRequestor.java | 7 +++++ .../common/driver/EvaluatorRequestorImpl.java | 20 +++++++++++++ .../data/output/OutputServiceDriver.java | 5 ++-- .../group/broadcast/BroadcastDriver.java | 5 ++-- .../apache/reef/examples/hello/HelloDriver.java | 5 ++-- .../examples/hello/HelloJVMOptionsDriver.java | 5 ++-- .../examples/hellohttp/HttpShellJobDriver.java | 12 ++++---- .../HelloMultiRuntimeDriver.java | 20 ++++++------- .../apache/reef/examples/pool/JobDriver.java | 12 ++++---- .../scheduler/driver/SchedulerDriver.java | 5 ++-- .../reef/examples/suspend/SuspendDriver.java | 8 +++-- 12 files changed, 79 insertions(+), 56 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequest.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequest.java b/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequest.java index 37ea0b5..38494ac 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequest.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequest.java @@ -20,6 +20,7 @@ package org.apache.reef.driver.evaluator; import org.apache.reef.annotations.Provided; import org.apache.reef.annotations.audience.DriverSide; +import org.apache.reef.annotations.audience.Private; import org.apache.reef.annotations.audience.Public; import java.util.ArrayList; import java.util.Collections; @@ -138,7 +139,7 @@ public final class EvaluatorRequest { /** * {@link EvaluatorRequest}s are build using this Builder. */ - public static final class Builder implements org.apache.reef.util.Builder<EvaluatorRequest> { + public static class Builder<T extends Builder> implements org.apache.reef.util.Builder<EvaluatorRequest> { private int n = 1; private int megaBytes = -1; @@ -147,7 +148,8 @@ public final class EvaluatorRequest { private final List<String> rackNames = new ArrayList<>(); private String runtimeName = ""; - private Builder() { + @Private + public Builder() { } /** @@ -176,9 +178,9 @@ public final class EvaluatorRequest { * @return this builder */ @SuppressWarnings("checkstyle:hiddenfield") - public Builder setMemory(final int megaBytes) { + public T setMemory(final int megaBytes) { this.megaBytes = megaBytes; - return this; + return (T) this; } /** @@ -187,9 +189,10 @@ public final class EvaluatorRequest { * @param runtimeName to request for the Evaluator. * @return this builder */ - public Builder setRuntimeName(final String runtimeName) { + @SuppressWarnings("checkstyle:hiddenfield") + public T setRuntimeName(final String runtimeName) { this.runtimeName = runtimeName; - return this; + return (T) this; } /** @@ -199,9 +202,9 @@ public final class EvaluatorRequest { * @return this Builder. */ @SuppressWarnings("checkstyle:hiddenfield") - public Builder setNumberOfCores(final int cores) { + public T setNumberOfCores(final int cores) { this.cores = cores; - return this; + return (T) this; } /** @@ -211,9 +214,9 @@ public final class EvaluatorRequest { * @return this Builder. */ @SuppressWarnings("checkstyle:hiddenfield") - public Builder setNumber(final int n) { + public T setNumber(final int n) { this.n = n; - return this; + return (T) this; } /** @@ -224,9 +227,9 @@ public final class EvaluatorRequest { * @param nodeName a preferred node name * @return this Builder. */ - public Builder addNodeName(final String nodeName) { + public T addNodeName(final String nodeName) { this.nodeNames.add(nodeName); - return this; + return (T) this; } /** @@ -238,9 +241,9 @@ public final class EvaluatorRequest { * @param rackName a preferred rack name * @return this Builder. */ - public Builder addRackName(final String rackName) { + public T addRackName(final String rackName) { this.rackNames.add(rackName); - return this; + return (T) this; } /** http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequestor.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequestor.java b/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequestor.java index 36aec03..534b0ff 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequestor.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/driver/evaluator/EvaluatorRequestor.java @@ -21,6 +21,7 @@ package org.apache.reef.driver.evaluator; import org.apache.reef.annotations.Provided; import org.apache.reef.annotations.audience.DriverSide; import org.apache.reef.annotations.audience.Public; +import org.apache.reef.runtime.common.driver.EvaluatorRequestorImpl; /** * Interface through which Evaluators can be requested. @@ -35,4 +36,10 @@ public interface EvaluatorRequestor { * The response will surface in the AllocatedEvaluator message handler. */ void submit(final EvaluatorRequest req); + + /** + * Get a new Builder for the evaluator with fluid interface. + * @return Builder for the evaluator + */ + EvaluatorRequestorImpl.Builder newRequest(); } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/EvaluatorRequestorImpl.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/EvaluatorRequestorImpl.java b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/EvaluatorRequestorImpl.java index b5dc69c..58f5a8a 100644 --- a/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/EvaluatorRequestorImpl.java +++ b/lang/java/reef-common/src/main/java/org/apache/reef/runtime/common/driver/EvaluatorRequestorImpl.java @@ -112,4 +112,24 @@ public final class EvaluatorRequestorImpl implements EvaluatorRequestor { this.resourceRequestHandler.onNext(request); } } + + /** + * Get a new builder. + * + * @return a new EvaluatorRequest Builder extended with the new submit method. + */ + @Override + public Builder newRequest() { + return new Builder(); + } + + /** + * {@link EvaluatorRequest.Builder} extended with a new submit method. + * {@link EvaluatorRequest}s are built using this builder. + */ + public final class Builder extends EvaluatorRequest.Builder<Builder> { + public synchronized void submit() { + EvaluatorRequestorImpl.this.submit(this.build()); + } + } } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/data/output/OutputServiceDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/data/output/OutputServiceDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/data/output/OutputServiceDriver.java index 50fb86c..5d1e9ea 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/data/output/OutputServiceDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/data/output/OutputServiceDriver.java @@ -21,7 +21,6 @@ package org.apache.reef.examples.data.output; import org.apache.reef.driver.context.ActiveContext; import org.apache.reef.driver.context.ContextConfiguration; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.TaskConfiguration; import org.apache.reef.io.data.output.OutputService; @@ -79,11 +78,11 @@ public final class OutputServiceDriver { public final class StartHandler implements EventHandler<StartTime> { @Override public void onNext(final StartTime startTime) { - OutputServiceDriver.this.requestor.submit(EvaluatorRequest.newBuilder() + OutputServiceDriver.this.requestor.newRequest() .setNumber(3) .setMemory(64) .setNumberOfCores(1) - .build()); + .submit(); LOG.log(Level.INFO, "Requested Evaluator."); } } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastDriver.java index eabda77..28c9393 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/group/broadcast/BroadcastDriver.java @@ -23,7 +23,6 @@ import org.apache.reef.driver.context.ActiveContext; import org.apache.reef.driver.context.ClosedContext; import org.apache.reef.driver.context.ContextConfiguration; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.FailedTask; import org.apache.reef.driver.task.TaskConfiguration; @@ -129,10 +128,10 @@ public class BroadcastDriver { public void onNext(final StartTime startTime) { final int numEvals = BroadcastDriver.this.numberOfReceivers + 1; LOG.log(Level.FINE, "Requesting {0} evaluators", numEvals); - BroadcastDriver.this.requestor.submit(EvaluatorRequest.newBuilder() + BroadcastDriver.this.requestor.newRequest() .setNumber(numEvals) .setMemory(2048) - .build()); + .submit(); } } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloDriver.java index f2d03c2..258b4ec 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloDriver.java @@ -19,7 +19,6 @@ package org.apache.reef.examples.hello; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.TaskConfiguration; import org.apache.reef.tang.Configuration; @@ -58,11 +57,11 @@ public final class HelloDriver { public final class StartHandler implements EventHandler<StartTime> { @Override public void onNext(final StartTime startTime) { - HelloDriver.this.requestor.submit(EvaluatorRequest.newBuilder() + HelloDriver.this.requestor.newRequest() .setNumber(1) .setMemory(64) .setNumberOfCores(1) - .build()); + .submit(); LOG.log(Level.INFO, "Requested Evaluator."); } } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloJVMOptionsDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloJVMOptionsDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloJVMOptionsDriver.java index a331aa1..d8a2ab1 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloJVMOptionsDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hello/HelloJVMOptionsDriver.java @@ -19,7 +19,6 @@ package org.apache.reef.examples.hello; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.evaluator.JVMProcess; import org.apache.reef.driver.evaluator.JVMProcessFactory; @@ -64,11 +63,11 @@ public final class HelloJVMOptionsDriver { public final class StartHandler implements EventHandler<StartTime> { @Override public void onNext(final StartTime startTime) { - HelloJVMOptionsDriver.this.requestor.submit(EvaluatorRequest.newBuilder() + HelloJVMOptionsDriver.this.requestor.newRequest() .setNumber(1) .setMemory(64) .setNumberOfCores(1) - .build()); + .submit(); LOG.log(Level.INFO, "Requested Evaluator."); } } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellohttp/HttpShellJobDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellohttp/HttpShellJobDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellohttp/HttpShellJobDriver.java index bf71f4d..4e65bce 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellohttp/HttpShellJobDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellohttp/HttpShellJobDriver.java @@ -23,7 +23,6 @@ import org.apache.reef.driver.context.ClosedContext; import org.apache.reef.driver.context.ContextConfiguration; import org.apache.reef.driver.context.FailedContext; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.evaluator.FailedEvaluator; import org.apache.reef.driver.task.CompletedTask; @@ -167,12 +166,11 @@ public final class HttpShellJobDriver { private synchronized void requestEvaluators() { assert this.state == State.INIT; LOG.log(Level.INFO, "Schedule on {0} Evaluators.", this.numEvaluators); - this.evaluatorRequestor.submit( - EvaluatorRequest.newBuilder() - .setMemory(128) - .setNumberOfCores(1) - .setNumber(this.numEvaluators).build() - ); + this.evaluatorRequestor.newRequest() + .setMemory(128) + .setNumberOfCores(1) + .setNumber(this.numEvaluators) + .submit(); this.state = State.WAIT_EVALUATORS; this.expectCount = this.numEvaluators; } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellomultiruntime/HelloMultiRuntimeDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellomultiruntime/HelloMultiRuntimeDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellomultiruntime/HelloMultiRuntimeDriver.java index 55313cd..e4cf643 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellomultiruntime/HelloMultiRuntimeDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/hellomultiruntime/HelloMultiRuntimeDriver.java @@ -19,10 +19,10 @@ package org.apache.reef.examples.hellomultiruntime; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.TaskConfiguration; import org.apache.reef.examples.hello.HelloTask; +import org.apache.reef.runtime.local.driver.RuntimeIdentifier; import org.apache.reef.tang.Configuration; import org.apache.reef.tang.annotations.Unit; import org.apache.reef.wake.EventHandler; @@ -59,21 +59,21 @@ public final class HelloMultiRuntimeDriver { public final class StartHandler implements EventHandler<StartTime> { @Override public void onNext(final StartTime startTime) { - HelloMultiRuntimeDriver.this.requestor.submit(EvaluatorRequest.newBuilder() + HelloMultiRuntimeDriver.this.requestor.newRequest() .setNumber(1) .setMemory(64) .setNumberOfCores(1) - .setRuntimeName(org.apache.reef.runtime.local.driver.RuntimeIdentifier.RUNTIME_NAME) - .build()); + .setRuntimeName(RuntimeIdentifier.RUNTIME_NAME) + .submit(); LOG.log(Level.INFO, "Requested Local Evaluator ."); - HelloMultiRuntimeDriver.this.requestor.submit(EvaluatorRequest.newBuilder() - .setNumber(1) - .setMemory(64) - .setNumberOfCores(1) - .setRuntimeName(org.apache.reef.runtime.yarn.driver.RuntimeIdentifier.RUNTIME_NAME) - .build()); + HelloMultiRuntimeDriver.this.requestor.newRequest() + .setNumber(1) + .setMemory(64) + .setNumberOfCores(1) + .setRuntimeName(RuntimeIdentifier.RUNTIME_NAME) + .submit(); LOG.log(Level.INFO, "Requested Yarn Evaluator."); } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/JobDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/JobDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/JobDriver.java index 2a0fabb..1b4eaf2 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/JobDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/pool/JobDriver.java @@ -22,7 +22,6 @@ import org.apache.reef.driver.context.ActiveContext; import org.apache.reef.driver.context.ContextConfiguration; import org.apache.reef.driver.evaluator.AllocatedEvaluator; import org.apache.reef.driver.evaluator.CompletedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.CompletedTask; import org.apache.reef.driver.task.RunningTask; @@ -131,12 +130,11 @@ public final class JobDriver { @Override public void onNext(final StartTime startTime) { LOG.log(Level.INFO, "TIME: Start Driver with {0} Evaluators", numEvaluators); - evaluatorRequestor.submit( - EvaluatorRequest.newBuilder() - .setMemory(128) - .setNumberOfCores(1) - .setNumber(numEvaluators).build() - ); + evaluatorRequestor.newRequest() + .setMemory(128) + .setNumberOfCores(1) + .setNumber(numEvaluators) + .submit(); } } http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/scheduler/driver/SchedulerDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/scheduler/driver/SchedulerDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/scheduler/driver/SchedulerDriver.java index f4a1127..21c9b02 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/scheduler/driver/SchedulerDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/scheduler/driver/SchedulerDriver.java @@ -21,7 +21,6 @@ package org.apache.reef.examples.scheduler.driver; import org.apache.reef.driver.context.ActiveContext; import org.apache.reef.driver.context.ContextConfiguration; import org.apache.reef.driver.evaluator.AllocatedEvaluator; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.CompletedTask; import org.apache.reef.examples.scheduler.client.SchedulerREEF; @@ -251,10 +250,10 @@ public final class SchedulerDriver { } nRequestedEval += numToRequest; - requestor.submit(EvaluatorRequest.newBuilder() + requestor.newRequest() .setMemory(32) .setNumber(numToRequest) - .build()); + .submit(); } /** http://git-wip-us.apache.org/repos/asf/reef/blob/02ddd4a4/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/SuspendDriver.java ---------------------------------------------------------------------- diff --git a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/SuspendDriver.java b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/SuspendDriver.java index 1ed2f39..f7ed1c2 100644 --- a/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/SuspendDriver.java +++ b/lang/java/reef-examples/src/main/java/org/apache/reef/examples/suspend/SuspendDriver.java @@ -23,7 +23,6 @@ import org.apache.reef.driver.context.ActiveContext; import org.apache.reef.driver.context.ContextConfiguration; import org.apache.reef.driver.evaluator.AllocatedEvaluator; import org.apache.reef.driver.evaluator.EvaluatorDescriptor; -import org.apache.reef.driver.evaluator.EvaluatorRequest; import org.apache.reef.driver.evaluator.EvaluatorRequestor; import org.apache.reef.driver.task.*; import org.apache.reef.io.checkpoint.fs.FSCheckPointServiceConfiguration; @@ -322,8 +321,11 @@ public class SuspendDriver { @Override public void onNext(final StartTime time) { LOG.log(Level.INFO, "StartTime: {0}", time); - evaluatorRequestor.submit(EvaluatorRequest.newBuilder() - .setMemory(128).setNumberOfCores(1).setNumber(NUM_EVALUATORS).build()); + evaluatorRequestor.newRequest() + .setMemory(128) + .setNumberOfCores(1) + .setNumber(NUM_EVALUATORS) + .submit(); } }
