Repository: incubator-reef
Updated Branches:
refs/heads/master 8587b42dc -> 0e47fff57
[REEF-675] EvaluatorRequest(or) related cleanups.
* Made fields in `IEvaluatorRequest` immutable and documented them.
* Removed capabilities-related APIs from `IEvaluatorRequest` as they
never work.
* Added `IEvaluatorRequestor.NewBuilder()` and used it in all drivers.
* Fixed a typo in `EvaluatorRequstor.cs`
* Deprecated `DefaultEvaluatorRequestorHandler`
* Deprecated `IFailedEvaluator.EvaluatorRequetor`
JIRAs:
[REEF-675](https://issues.apache.org/jira/browse/REEF-675)
[REEF-671](https://issues.apache.org/jira/browse/REEF-671)
Pull Request:
This closes #465
Author: Markus Weimer <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/0e47fff5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/0e47fff5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/0e47fff5
Branch: refs/heads/master
Commit: 0e47fff5716f6d2500fceb51a5895ae025241cd3
Parents: 8587b42
Author: Markus Weimer <[email protected]>
Authored: Thu Sep 3 17:53:49 2015 -0700
Committer: Julia Wang <[email protected]>
Committed: Fri Sep 4 11:35:24 2015 -0700
----------------------------------------------------------------------
.../Bridge/Events/EvaluatorRequestor.cs | 108 +++++++++++++++++++
.../Bridge/Events/EvaluatorRequstor.cs | 96 -----------------
.../DefaultEvaluatorRequestorHandler.cs | 1 +
.../Evaluator/EvaluatorRequest.cs | 47 ++++----
.../Evaluator/EvaluatorRequestBuilder.cs | 91 ++++++++++++----
.../Evaluator/IEvaluatorRequest.cs | 44 ++++----
.../Evaluator/IEvaluatorRequestor.cs | 22 ++--
.../Evaluator/IFailedEvaluator.cs | 2 +
.../Org.Apache.REEF.Driver.csproj | 2 +-
.../HelloDriverStartHandler.cs | 18 +++-
.../HelloFailedEvaluatorHandler.cs | 15 +--
.../HelloDriver.cs | 2 +-
.../DriverRestart/HelloRestartDriver.cs | 2 +-
.../KMeans/KMeansDriverHandlers.cs | 4 +-
.../OnREEF/Driver/IMRUDriver.cs | 16 ++-
.../BroadcastReduceDriver.cs | 9 +-
.../PipelinedBroadcastReduceDriver.cs | 8 +-
.../ScatterReduceDriver.cs | 8 +-
.../Bridge/HelloSimpleEventHandlers.cs | 10 +-
.../Functional/Messaging/MessageDriver.cs | 9 +-
20 files changed, 326 insertions(+), 188 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequestor.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequestor.cs
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequestor.cs
new file mode 100644
index 0000000..3fc4cb7
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequestor.cs
@@ -0,0 +1,108 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Runtime.Serialization;
+using Org.Apache.REEF.Common.Catalog;
+using Org.Apache.REEF.Common.Evaluator;
+using Org.Apache.REEF.Driver.Bridge.Clr2java;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Driver.Bridge.Events
+{
+ [DataContract]
+ internal class EvaluatorRequestor : IEvaluatorRequestor
+ {
+ private static readonly Logger LOGGER =
Logger.GetLogger(typeof(EvaluatorRequestor));
+
+ private static Dictionary<string, IEvaluatorDescriptor> _evaluators;
+
+ internal EvaluatorRequestor(IEvaluatorRequestorClr2Java clr2Java)
+ {
+ InstanceId = Guid.NewGuid().ToString("N");
+ Clr2Java = clr2Java;
+ }
+
+ internal static Dictionary<string, IEvaluatorDescriptor> Evaluators
+ {
+ get
+ {
+ if (_evaluators == null)
+ {
+ _evaluators = new Dictionary<string,
IEvaluatorDescriptor>();
+ }
+ return _evaluators;
+ }
+ }
+
+ public IResourceCatalog ResourceCatalog { get; set; }
+
+ [DataMember]
+ public string InstanceId { get; set; }
+
+ [DataMember]
+ private IEvaluatorRequestorClr2Java Clr2Java { get; set; }
+
+ public void Submit(IEvaluatorRequest request)
+ {
+ LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture,
"Submitting request for {0} evaluators and {1} MB memory and {2} core to rack
{3}.", request.Number, request.MemoryMegaBytes, request.VirtualCore,
request.Rack));
+
+ lock (Evaluators)
+ {
+ for (int i = 0; i < request.Number; i++)
+ {
+ EvaluatorDescriptorImpl descriptor = new
EvaluatorDescriptorImpl(new NodeDescriptorImpl(), EvaluatorType.CLR,
request.MemoryMegaBytes, request.VirtualCore);
+ descriptor.Rack = request.Rack;
+ string key = string.Format(CultureInfo.InvariantCulture,
"{0}_{1}", request.EvaluatorBatchId, i);
+ try
+ {
+ _evaluators.Add(key, descriptor);
+ }
+ catch (ArgumentException e)
+ {
+ Exceptions.Caught(e, Level.Error,
string.Format(CultureInfo.InvariantCulture, "EvaluatorBatchId [{0}] already
exists.", key), LOGGER);
+ Exceptions.Throw(new InvalidOperationException("Cannot
use evaluator id " + key, e), LOGGER);
+ }
+ }
+ }
+
+ Clr2Java.Submit(request);
+ }
+
+ public EvaluatorRequestBuilder NewBuilder()
+ {
+ return new EvaluatorRequestBuilder();
+ }
+
+ public EvaluatorRequestBuilder NewBuilder(IEvaluatorRequest request)
+ {
+#pragma warning disable 618
+ return new EvaluatorRequestBuilder(request);
+#pragma warning restore 618
+ }
+
+ public void Dispose()
+ {
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequstor.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequstor.cs
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequstor.cs
deleted file mode 100644
index 0be5c9b..0000000
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/EvaluatorRequstor.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Runtime.Serialization;
-using Org.Apache.REEF.Common.Catalog;
-using Org.Apache.REEF.Common.Evaluator;
-using Org.Apache.REEF.Driver.Bridge.Clr2java;
-using Org.Apache.REEF.Driver.Evaluator;
-using Org.Apache.REEF.Utilities.Diagnostics;
-using Org.Apache.REEF.Utilities.Logging;
-
-namespace Org.Apache.REEF.Driver.Bridge.Events
-{
- [DataContract]
- internal class EvaluatorRequestor : IEvaluatorRequestor
- {
- private static readonly Logger LOGGER =
Logger.GetLogger(typeof(EvaluatorRequestor));
-
- private static Dictionary<string, IEvaluatorDescriptor> _evaluators;
-
- public EvaluatorRequestor(IEvaluatorRequestorClr2Java clr2Java)
- {
- InstanceId = Guid.NewGuid().ToString("N");
- Clr2Java = clr2Java;
- }
-
- public static Dictionary<string, IEvaluatorDescriptor> Evaluators
- {
- get
- {
- if (_evaluators == null)
- {
- _evaluators = new Dictionary<string,
IEvaluatorDescriptor>();
- }
- return _evaluators;
- }
- }
-
- public IResourceCatalog ResourceCatalog { get; set; }
-
- [DataMember]
- public string InstanceId { get; set; }
-
- [DataMember]
- private IEvaluatorRequestorClr2Java Clr2Java { get; set; }
-
- public void Submit(IEvaluatorRequest request)
- {
- LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture,
"Submitting request for {0} evaluators and {1} MB memory and {2} core to rack
{3}.", request.Number, request.MemoryMegaBytes, request.VirtualCore,
request.Rack));
-
- lock (Evaluators)
- {
- for (int i = 0; i < request.Number; i++)
- {
- EvaluatorDescriptorImpl descriptor = new
EvaluatorDescriptorImpl(new NodeDescriptorImpl(), EvaluatorType.CLR,
request.MemoryMegaBytes, request.VirtualCore);
- descriptor.Rack = request.Rack;
- string key = string.Format(CultureInfo.InvariantCulture,
"{0}_{1}", request.EvaluatorBatchId, i);
- try
- {
- _evaluators.Add(key, descriptor);
- }
- catch (ArgumentException e)
- {
- Exceptions.Caught(e, Level.Error,
string.Format(CultureInfo.InvariantCulture, "EvaluatorBatchId [{0}] already
exists.", key), LOGGER);
- Exceptions.Throw(new InvalidOperationException("Cannot
use evaluator id " + key, e), LOGGER);
- }
- }
- }
-
- Clr2Java.Submit(request);
- }
-
- public void Dispose()
- {
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Defaults/DefaultEvaluatorRequestorHandler.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Driver/Defaults/DefaultEvaluatorRequestorHandler.cs
b/lang/cs/Org.Apache.REEF.Driver/Defaults/DefaultEvaluatorRequestorHandler.cs
index 068b3cf..0617e29 100644
---
a/lang/cs/Org.Apache.REEF.Driver/Defaults/DefaultEvaluatorRequestorHandler.cs
+++
b/lang/cs/Org.Apache.REEF.Driver/Defaults/DefaultEvaluatorRequestorHandler.cs
@@ -27,6 +27,7 @@ namespace Org.Apache.REEF.Driver.Defaults
/// <summary>
/// Default handler for close messages from the client: logging it
/// </summary>
+ [Obsolete("In Version 0.13. Have an instance of IEvaluatorRequestor
injected instead.")]
public class DefaultEvaluatorRequestorHandler :
IObserver<IEvaluatorRequestor>
{
private static readonly Logger LOGGER =
Logger.GetLogger(typeof(DefaultClientCloseHandler));
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequest.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequest.cs
b/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequest.cs
index 3132bc7..c0d01dc 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequest.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequest.cs
@@ -18,41 +18,48 @@
*/
using System;
-using System.Collections.Generic;
using System.Runtime.Serialization;
-using Org.Apache.REEF.Common.Catalog;
-using Org.Apache.REEF.Common.Catalog.Capabilities;
namespace Org.Apache.REEF.Driver.Evaluator
{
+ /// <summary>
+ /// Default implementation of IEvaluatorRequest.
+ /// </summary>
+ [Obsolete("This class will be internal after 0.13")]
[DataContract]
public class EvaluatorRequest : IEvaluatorRequest
{
- public EvaluatorRequest()
+ [Obsolete("This constructor will be internal after 0.13")]
+ public EvaluatorRequest()
: this(0, 0, 1, string.Empty, Guid.NewGuid().ToString("N"))
{
}
- public EvaluatorRequest(int number, int megaBytes)
+ [Obsolete("This constructor will be internal after 0.13")]
+ public EvaluatorRequest(int number, int megaBytes)
: this(number, megaBytes, 1, string.Empty,
Guid.NewGuid().ToString("N"))
{
}
+ [Obsolete("This constructor will be internal after 0.13")]
public EvaluatorRequest(int number, int megaBytes, int core)
: this(number, megaBytes, core, string.Empty,
Guid.NewGuid().ToString("N"))
{
}
+ [Obsolete("This constructor will be internal after 0.13")]
public EvaluatorRequest(int number, int megaBytes, string rack)
: this(number, megaBytes, 1, rack, Guid.NewGuid().ToString("N"))
{
}
+ [Obsolete("This constructor will be internal after 0.13")]
public EvaluatorRequest(int number, int megaBytes, int core, string
rack)
: this(number, megaBytes, core, rack, Guid.NewGuid().ToString("N"))
{
}
+ [Obsolete("This constructor will be internal after 0.13")]
public EvaluatorRequest(int number, int megaBytes, int core, string
rack, string evaluatorBatchId)
{
Number = number;
@@ -62,46 +69,34 @@ namespace Org.Apache.REEF.Driver.Evaluator
EvaluatorBatchId = evaluatorBatchId;
}
- public EvaluatorRequest(int number, int megaBytes, int core,
List<ICapability> capabilitieses, IResourceCatalog catalog)
- {
- Number = number;
- MemoryMegaBytes = megaBytes;
- Capabilities = capabilitieses;
- VirtualCore = core;
- Catalog = catalog;
- EvaluatorBatchId = Guid.NewGuid().ToString("N");
- }
-
[DataMember]
public string InstanceId { get; set; }
[DataMember]
- public int MemoryMegaBytes { get; set; }
+ public int MemoryMegaBytes { get; private set; }
[DataMember]
- public int Number { get; set; }
-
- [DataMember]
- public int VirtualCore { get; set; }
+ public int Number { get; private set; }
[DataMember]
- public string Rack { get; set; }
+ public int VirtualCore { get; private set; }
[DataMember]
- public string EvaluatorBatchId { get; set; }
+ public string Rack { get; private set; }
- public List<ICapability> Capabilities { get; set; }
-
- public IResourceCatalog Catalog { get; set; }
+ [DataMember]
+ public string EvaluatorBatchId { get; private set; }
+ [Obsolete("Use IEvaluatorRequestor.NewBuilder() instead.")]
public static EvaluatorRequestBuilder NewBuilder()
{
return new EvaluatorRequestBuilder();
}
+ [Obsolete("Use IEvaluatorRequestor.NewBuilder() instead.")]
public static EvaluatorRequestBuilder NewBuilder(EvaluatorRequest
request)
{
return new EvaluatorRequestBuilder(request);
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequestBuilder.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequestBuilder.cs
b/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequestBuilder.cs
index d1b4864..8d018b1 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequestBuilder.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/EvaluatorRequestBuilder.cs
@@ -17,43 +17,98 @@
* under the License.
*/
-using System.Collections.Generic;
-using Org.Apache.REEF.Common.Catalog;
-using Org.Apache.REEF.Common.Catalog.Capabilities;
+using System;
namespace Org.Apache.REEF.Driver.Evaluator
{
- public class EvaluatorRequestBuilder
+ public sealed class EvaluatorRequestBuilder
{
- public EvaluatorRequestBuilder(EvaluatorRequest request)
+ private string _evaluatorBatchId;
+ private string _rackName;
+
+ [Obsolete("This constructor will be internal after 0.13.")]
+ public EvaluatorRequestBuilder(IEvaluatorRequest request)
{
- foreach (ICapability capability in request.Capabilities)
- {
- Capabilities.Add(capability);
- }
Number = request.Number;
- Catalog = request.Catalog;
MegaBytes = request.MemoryMegaBytes;
VirtualCore = request.VirtualCore;
+ _evaluatorBatchId = request.EvaluatorBatchId;
+ _rackName = request.Rack;
}
internal EvaluatorRequestBuilder()
{
+ Number = 1;
+ VirtualCore = 1;
+ MegaBytes = 64;
+ _rackName = String.Empty;
+ _evaluatorBatchId = Guid.NewGuid().ToString("N");
}
- public int Number { get; set; }
+ public int Number { get; private set; }
+ public int MegaBytes { get; private set; }
+ public int VirtualCore { get; private set; }
+
+ /// <summary>
+ /// Set the number of evaluators to request.
+ /// </summary>
+ /// <param name="number"></param>
+ /// <returns>this</returns>
+ public EvaluatorRequestBuilder SetNumber(int number)
+ {
+ Number = number;
+ return this;
+ }
- public List<ICapability> Capabilities { get; set; }
+ /// <summary>
+ /// Set the amount of memory (in MB) for the evaluator.
+ /// </summary>
+ /// <param name="megabytes"></param>
+ /// <returns>this</returns>
+ public EvaluatorRequestBuilder SetMegabytes(int megabytes)
+ {
+ MegaBytes = megabytes;
+ return this;
+ }
- public IResourceCatalog Catalog { get; set; }
+ /// <summary>
+ /// Set the number of CPU cores for the evaluator.
+ /// </summary>
+ /// <param name="numberOfCores"></param>
+ /// <returns>this</returns>
+ public EvaluatorRequestBuilder SetCores(int numberOfCores)
+ {
+ VirtualCore = numberOfCores;
+ return this;
+ }
- public int MegaBytes { get; set; }
+ /// <summary>
+ /// Set the rack name to do the request for.
+ /// </summary>
+ /// <param name="rackName"></param>
+ /// <returns>this</returns>
+ public EvaluatorRequestBuilder SetRackName(string rackName)
+ {
+ _rackName = rackName;
+ return this;
+ }
- public int VirtualCore { get; set; }
+ // TODO[REEF-718]: Document.
+ public EvaluatorRequestBuilder SetEvaluatorBatchId(string
evaluatorBatchId)
+ {
+ _evaluatorBatchId = evaluatorBatchId;
+ return this;
+ }
- public EvaluatorRequest Build()
+ /// <summary>
+ /// Build the EvaluatorRequest.
+ /// </summary>
+ /// <returns></returns>
+ public IEvaluatorRequest Build()
{
- return new EvaluatorRequest(Number, MegaBytes, VirtualCore,
Capabilities, Catalog);
+#pragma warning disable 618
+ return new EvaluatorRequest(Number, MegaBytes, VirtualCore,
rack:_rackName, evaluatorBatchId:_evaluatorBatchId);
+#pragma warning restore 618
}
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequest.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequest.cs
b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequest.cs
index dcfd85b..a1cadff 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequest.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequest.cs
@@ -17,26 +17,34 @@
* under the License.
*/
-using System.Collections.Generic;
-using Org.Apache.REEF.Common.Catalog;
-using Org.Apache.REEF.Common.Catalog.Capabilities;
-
namespace Org.Apache.REEF.Driver.Evaluator
{
+ /// <summary>
+ /// A request for an Evaluator allocation.
+ /// </summary>
public interface IEvaluatorRequest
{
- int MemoryMegaBytes { get; set; }
-
- int Number { get; set; }
-
- int VirtualCore { get; set; }
-
- string Rack { get; set; }
-
- string EvaluatorBatchId { get; set; }
-
- List<ICapability> Capabilities { get; set; }
-
- IResourceCatalog Catalog { get; set; }
+ /// <summary>
+ /// Memory for the Evaluator in megabytes.
+ /// </summary>
+ int MemoryMegaBytes { get; }
+
+ /// <summary>
+ /// Number of Evaluators to allocate.
+ /// </summary>
+ int Number { get; }
+
+ /// <summary>
+ /// Number of cores in the Evaluator.
+ /// </summary>
+ int VirtualCore { get; }
+
+ /// <summary>
+ /// The desired rack name for the Evaluator to be allocated in.
+ /// </summary>
+ string Rack { get; }
+
+ // TODO[REEF-718] Document
+ string EvaluatorBatchId { get; }
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequestor.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequestor.cs
b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequestor.cs
index 63a1dda..f423af5 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequestor.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IEvaluatorRequestor.cs
@@ -29,17 +29,25 @@ namespace Org.Apache.REEF.Driver.Evaluator
/// <summary>
/// Access to the {@link ResourceCatalog} for the cluster this Factory
has access to
/// </summary>
- IResourceCatalog ResourceCatalog { get; set; }
-
- /// <summary>
- /// Map between user evaluator id and evaluator information
- /// </summary>
- //IDictionary<string, IEvaluatorDescriptor> Evaluators { get; }
+ IResourceCatalog ResourceCatalog { get; }
/// <summary>
/// Submit the request for new evaluator. The response will surface in
the AllocatedEvaluator message handler.
/// </summary>
/// <param name="request"></param>
void Submit(IEvaluatorRequest request);
+
+ /// <summary>
+ /// Returns a builder for new Evaluator requests.
+ /// </summary>
+ /// <returns></returns>
+ EvaluatorRequestBuilder NewBuilder();
+
+ /// <summary>
+ /// Returns a builder for new Evaluator requests.
+ /// </summary>
+ /// <param name="request">The request to clone</param>
+ /// <returns></returns>
+ EvaluatorRequestBuilder NewBuilder(IEvaluatorRequest request);
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
index bce2937..a87d01c 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
@@ -17,6 +17,7 @@
* under the License.
*/
+using System;
using System.Collections.Generic;
using Org.Apache.REEF.Common.Exceptions;
using Org.Apache.REEF.Driver.Bridge.Events;
@@ -36,6 +37,7 @@ namespace Org.Apache.REEF.Driver.Evaluator
Optional<IFailedTask> FailedTask { get; set; }
+ [Obsolete("Will be removed after 0.13. Have an instance injected
instead.")]
IEvaluatorRequestor GetEvaluatorRequetor();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
index 285275a..b06feb1 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
+++ b/lang/cs/Org.Apache.REEF.Driver/Org.Apache.REEF.Driver.csproj
@@ -73,7 +73,7 @@ under the License.
<Compile Include="Bridge\Events\DriverRestartCompleted.cs" />
<Compile Include="Bridge\Events\DriverRestarted.cs" />
<Compile Include="Bridge\Events\DriverStarted.cs" />
- <Compile Include="Bridge\Events\EvaluatorRequstor.cs" />
+ <Compile Include="Bridge\Events\EvaluatorRequestor.cs" />
<Compile Include="Bridge\Events\FailedContext.cs" />
<Compile Include="Bridge\Events\FailedEvaluator.cs" />
<Compile Include="Bridge\Events\FailedTask.cs" />
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloDriverStartHandler.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloDriverStartHandler.cs
b/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloDriverStartHandler.cs
index fd29e9d..dbba419 100644
--- a/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloDriverStartHandler.cs
+++ b/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloDriverStartHandler.cs
@@ -63,7 +63,14 @@ namespace Org.Apache.REEF.Examples.AllHandlers
int core = 2;
string rack = "WonderlandRack";
string evaluatorBatchId = "evaluatorThatRequires512MBofMemory";
- EvaluatorRequest request = new EvaluatorRequest(evaluatorsNumber,
memory, core, rack, evaluatorBatchId);
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(evaluatorsNumber)
+ .SetMegabytes(memory)
+ .SetCores(core)
+ .SetRackName(rack)
+ .SetEvaluatorBatchId(evaluatorBatchId)
+ .Build();
_evaluatorRequestor.Submit(request);
@@ -72,7 +79,14 @@ namespace Org.Apache.REEF.Examples.AllHandlers
core = 2;
rack = "WonderlandRack";
evaluatorBatchId = "evaluatorThatRequires1999MBofMemory";
- request = new EvaluatorRequest(evaluatorsNumber, memory, core,
rack, evaluatorBatchId);
+ request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(evaluatorsNumber)
+ .SetMegabytes(memory)
+ .SetCores(core)
+ .SetRackName(rack)
+ .SetEvaluatorBatchId(evaluatorBatchId)
+ .Build();
_evaluatorRequestor.Submit(request);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloFailedEvaluatorHandler.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloFailedEvaluatorHandler.cs
b/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloFailedEvaluatorHandler.cs
index 542fd3e..d0a781e 100644
---
a/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloFailedEvaluatorHandler.cs
+++
b/lang/cs/Org.Apache.REEF.Examples.AllHandlers/HelloFailedEvaluatorHandler.cs
@@ -32,9 +32,12 @@ namespace Org.Apache.REEF.Examples.AllHandlers
private static readonly int _maxTrial = 2;
+ private readonly IEvaluatorRequestor _evaluatorRequestor;
+
[Inject]
- private HelloFailedEvaluatorHandler()
+ private HelloFailedEvaluatorHandler(IEvaluatorRequestor
evaluatorRequestor)
{
+ _evaluatorRequestor = evaluatorRequestor;
}
/// <summary>
@@ -47,12 +50,10 @@ namespace Org.Apache.REEF.Examples.AllHandlers
if (++_failureCount < _maxTrial)
{
Console.WriteLine("Requesting another evaluator");
- EvaluatorRequest newRequest = new EvaluatorRequest(1, 512,
"somerack");
- IEvaluatorRequestor requestor =
failedEvaluator.GetEvaluatorRequetor();
- if (failedEvaluator.GetEvaluatorRequetor() != null)
- {
- requestor.Submit(newRequest);
- }
+ var newRequest =
+
_evaluatorRequestor.NewBuilder().SetNumber(1).SetMegabytes(512).SetRackName("somerack").Build();
+ _evaluatorRequestor.Submit(newRequest);
+
}
else
{
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloDriver.cs
b/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloDriver.cs
index e1dbde1..b724b23 100644
--- a/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloREEF/HelloDriver.cs
@@ -70,7 +70,7 @@ namespace Org.Apache.REEF.Examples.HelloREEF
public void OnNext(IDriverStarted driverStarted)
{
_Logger.Log(Level.Info, string.Format("HelloDriver started at
{0}", driverStarted.StartTime));
- _evaluatorRequestor.Submit(new EvaluatorRequest(1, 64));
+
_evaluatorRequestor.Submit(_evaluatorRequestor.NewBuilder().SetMegabytes(64).Build());
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
b/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
index 63ada39..2b0485b 100644
--- a/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Examples/DriverRestart/HelloRestartDriver.cs
@@ -92,7 +92,7 @@ namespace Org.Apache.REEF.Examples.DriverRestart
public void OnNext(IDriverStarted driverStarted)
{
Logger.Log(Level.Info, "HelloRestartDriver started at {0}",
driverStarted.StartTime);
- _evaluatorRequestor.Submit(new
EvaluatorRequest(NumberOfTasksToSubmit, 64));
+
_evaluatorRequestor.Submit(_evaluatorRequestor.NewBuilder().SetNumber(NumberOfTasksToSubmit).SetMegabytes(64).Build());
}
/// <summary>
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Examples/MachineLearning/KMeans/KMeansDriverHandlers.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Examples/MachineLearning/KMeans/KMeansDriverHandlers.cs
b/lang/cs/Org.Apache.REEF.Examples/MachineLearning/KMeans/KMeansDriverHandlers.cs
index 24e82dd..20f30a5 100644
---
a/lang/cs/Org.Apache.REEF.Examples/MachineLearning/KMeans/KMeansDriverHandlers.cs
+++
b/lang/cs/Org.Apache.REEF.Examples/MachineLearning/KMeans/KMeansDriverHandlers.cs
@@ -190,9 +190,7 @@ namespace Org.Apache.REEF.Examples.MachineLearning.KMeans
public void OnNext(IDriverStarted value)
{
- int memory = 2048;
- int core = 1;
- EvaluatorRequest request = new EvaluatorRequest(_totalEvaluators,
memory, core);
+ var request =
_evaluatorRequestor.NewBuilder().SetCores(1).SetMegabytes(2048).Build();
_evaluatorRequestor.Submit(request);
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
b/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
index 2d8bad5..0655835 100644
--- a/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
+++ b/lang/cs/Org.Apache.REEF.IMRU/OnREEF/Driver/IMRUDriver.cs
@@ -113,7 +113,13 @@ namespace Org.Apache.REEF.IMRU.OnREEF.Driver
/// <param name="value">Event fired when driver started</param>
public void OnNext(IDriverStarted value)
{
- _evaluatorRequestor.Submit(new EvaluatorRequest(1,
_memoryForUpdateTask, _coresForUpdateTask));
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetCores(_coresForUpdateTask)
+ .SetMegabytes(_memoryForUpdateTask)
+ .SetNumber(1)
+ .Build();
+ _evaluatorRequestor.Submit(request);
//TODO[REEF-598]: Set a timeout for this request to be satisfied.
If it is not within that time, exit the Driver.
}
@@ -145,7 +151,13 @@ namespace Org.Apache.REEF.IMRU.OnREEF.Driver
serviceConf = Configurations.Merge(serviceConf, codecConfig,
_tcpPortProviderConfig);
_allocatedUpdateTaskEvaluator = true;
- _evaluatorRequestor.Submit(new
EvaluatorRequest(_dataSet.Count, _memoryPerMapper, _coresPerMapper));
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetMegabytes(_memoryForUpdateTask)
+ .SetNumber(_dataSet.Count)
+ .SetCores(_coresPerMapper)
+ .Build();
+ _evaluatorRequestor.Submit(request);
//TODO[REEF-598]: Set a timeout for this request to be
satisfied. If it is not within that time, exit the Driver.
}
else
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/BroadcastReduceDriverAndTasks/BroadcastReduceDriver.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/BroadcastReduceDriverAndTasks/BroadcastReduceDriver.cs
b/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/BroadcastReduceDriverAndTasks/BroadcastReduceDriver.cs
index 84082af..6f1ad0f 100644
---
a/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/BroadcastReduceDriverAndTasks/BroadcastReduceDriver.cs
+++
b/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/BroadcastReduceDriverAndTasks/BroadcastReduceDriver.cs
@@ -177,7 +177,14 @@ namespace
Org.Apache.REEF.Network.Examples.GroupCommunication.BroadcastReduceDri
public void OnNext(IDriverStarted value)
{
- EvaluatorRequest request = new EvaluatorRequest(_numEvaluators,
512, 2, "WonderlandRack", "BroadcastEvaluator");
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(_numEvaluators)
+ .SetMegabytes(512)
+ .SetCores(2)
+ .SetRackName("WonderlandRack")
+ .SetEvaluatorBatchId("BroadcastEvaluator")
+ .Build();
_evaluatorRequestor.Submit(request);
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/PipelineBroadcastReduceDriverAndTasks/PipelinedBroadcastReduceDriver.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/PipelineBroadcastReduceDriverAndTasks/PipelinedBroadcastReduceDriver.cs
b/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/PipelineBroadcastReduceDriverAndTasks/PipelinedBroadcastReduceDriver.cs
index 32439bd..9fb9652 100644
---
a/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/PipelineBroadcastReduceDriverAndTasks/PipelinedBroadcastReduceDriver.cs
+++
b/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/PipelineBroadcastReduceDriverAndTasks/PipelinedBroadcastReduceDriver.cs
@@ -201,7 +201,13 @@ namespace
Org.Apache.REEF.Network.Examples.GroupCommunication.PipelineBroadcastR
public void OnNext(IDriverStarted value)
{
- EvaluatorRequest request = new EvaluatorRequest(_numEvaluators,
512, 2, "WonderlandRack", "BroadcastEvaluator");
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(_numEvaluators)
+ .SetMegabytes(512)
+ .SetRackName("WonderlandRack")
+ .SetEvaluatorBatchId("BroadcastEvaluator")
+ .Build();
_evaluatorRequestor.Submit(request);
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/ScatterReduceDriverAndTasks/ScatterReduceDriver.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/ScatterReduceDriverAndTasks/ScatterReduceDriver.cs
b/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/ScatterReduceDriverAndTasks/ScatterReduceDriver.cs
index d2a7ea5..eb4cf86 100644
---
a/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/ScatterReduceDriverAndTasks/ScatterReduceDriver.cs
+++
b/lang/cs/Org.Apache.REEF.Network.Examples/GroupCommunication/ScatterReduceDriverAndTasks/ScatterReduceDriver.cs
@@ -148,7 +148,13 @@ namespace
Org.Apache.REEF.Network.Examples.GroupCommunication.ScatterReduceDrive
public void OnNext(IDriverStarted value)
{
- EvaluatorRequest request = new EvaluatorRequest(_numEvaluators,
512, 2, "WonderlandRack", "BroadcastEvaluator");
+ IEvaluatorRequest request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(_numEvaluators)
+ .SetMegabytes(512)
+ .SetCores(2)
+ .SetRackName("WonderlandRack")
+ .SetEvaluatorBatchId("BroadcastEvaluator").Build();
_evaluatorRequestor.Submit(request);
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
index 545c6fb..7b3b27c 100644
---
a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
+++
b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/HelloSimpleEventHandlers.cs
@@ -134,8 +134,14 @@ namespace Org.Apache.REEF.Tests.Functional.Bridge
int cpuCoreCount = 1;
string rack = "WonderlandRack";
string evaluatorBatchId = "evaluatorThatRequires3GBofMemory";
- EvaluatorRequest request = new
EvaluatorRequest(evaluatorsNumber, memory, cpuCoreCount, rack,
evaluatorBatchId);
-
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(evaluatorsNumber)
+ .SetMegabytes(memory)
+ .SetCores(cpuCoreCount)
+ .SetRackName(rack)
+ .SetEvaluatorBatchId(evaluatorBatchId)
+ .Build();
_evaluatorRequestor.Submit(request);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/0e47fff5/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
----------------------------------------------------------------------
diff --git
a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
index 2b9e532..e9d39f9 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Messaging/MessageDriver.cs
@@ -93,7 +93,14 @@ namespace Org.Apache.REEF.Tests.Functional.Messaging
public void OnNext(IDriverStarted value)
{
- EvaluatorRequest request = new EvaluatorRequest(NumerOfEvaluator,
512, 2, "WonderlandRack", "TaskMessagingEvaluator");
+ var request =
+ _evaluatorRequestor.NewBuilder()
+ .SetNumber(NumerOfEvaluator)
+ .SetMegabytes(512)
+ .SetCores(2)
+ .SetRackName("WonderlandRack")
+ .SetEvaluatorBatchId("TaskMessagingEvaluator")
+ .Build();
_evaluatorRequestor.Submit(request);
}