Repository: incubator-reef Updated Branches: refs/heads/master e0a00f484 -> 6eefbf1cc
[REEF-679] Made IContext immutable This makes all fields in `IContext` immutable. This change is reflected in the implementation classes. Also, those are now `internal`, which prompted a change to `(I)FailedEvaluator` which wasn't coded against the context interfaces. JIRA: [REEF-679](https://issues.apache.org/jira/browse/REEF-679) [REEF-666](https://issues.apache.org/jira/browse/REEF-666) Pull Request: This closes #498 Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/6eefbf1c Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/6eefbf1c Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/6eefbf1c Branch: refs/heads/master Commit: 6eefbf1cce4042c3603bf84430097b1be6d4d860 Parents: e0a00f4 Author: Markus Weimer <[email protected]> Authored: Wed Sep 16 17:23:24 2015 -0700 Committer: Andrew Chung <[email protected]> Committed: Fri Sep 18 16:59:47 2015 -0700 ---------------------------------------------------------------------- .../Bridge/Events/ActiveContext.cs | 42 +++++--------- .../Bridge/Events/ClosedContext.cs | 52 ++++++----------- .../Bridge/Events/FailedContext.cs | 61 +++++--------------- .../Bridge/Events/FailedEvaluator.cs | 38 ++++++++---- .../Org.Apache.REEF.Driver/Context/IContext.cs | 6 +- .../Evaluator/IFailedEvaluator.cs | 23 ++++++-- 6 files changed, 95 insertions(+), 127 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs index a5fe63b..6d3f1cb 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs @@ -33,10 +33,9 @@ namespace Org.Apache.REEF.Driver.Bridge.Events internal class ActiveContext : IActiveContext { private static readonly Logger LOGGER = Logger.GetLogger(typeof(ActiveContext)); - private readonly AvroConfigurationSerializer _serializer; - public ActiveContext(IActiveContextClr2Java clr2Java) + internal ActiveContext(IActiveContextClr2Java clr2Java) { InstanceId = Guid.NewGuid().ToString("N"); Clr2Java = clr2Java; @@ -44,48 +43,35 @@ namespace Org.Apache.REEF.Driver.Bridge.Events } [DataMember] - public string InstanceId { get; set; } + public string InstanceId { get; private set; } + + private IActiveContextClr2Java Clr2Java { get; set; } public string Id { - get - { - return Clr2Java.GetId(); - } + get { return Clr2Java.GetId(); } } public string EvaluatorId { - get - { - return Clr2Java.GetEvaluatorId(); - } - - set - { - } + get { return Clr2Java.GetEvaluatorId(); } } - public Optional<string> ParentId { get; set; } + public Optional<string> ParentId + { + // TODO[REEF-760]: Implement + get { return Optional<string>.Empty(); } + } public IEvaluatorDescriptor EvaluatorDescriptor { - get - { - return Clr2Java.GetEvaluatorDescriptor(); - } - - set - { - } + get { return Clr2Java.GetEvaluatorDescriptor(); } } - private IActiveContextClr2Java Clr2Java { get; set; } - public void SubmitTask(IConfiguration taskConfiguration) { LOGGER.Log(Level.Info, "ActiveContext::SubmitTask"); - string task = _serializer.ToString(taskConfiguration); + var task = _serializer.ToString(taskConfiguration); LOGGER.Log(Level.Verbose, "serialized taskConfiguration: " + task); Clr2Java.SubmitTask(task); } @@ -111,4 +97,4 @@ namespace Org.Apache.REEF.Driver.Bridge.Events throw new NotImplementedException(); } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs index 2aca0d2..27f90fa 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs @@ -26,13 +26,12 @@ using Org.Apache.REEF.Utilities; namespace Org.Apache.REEF.Driver.Bridge.Events { - public class ClosedContext : IClosedContext + internal sealed class ClosedContext : IClosedContext { - private readonly string _id; - private readonly string _evaluatorId; + private readonly string _id; - public ClosedContext(IClosedContextClr2Java clr2java) + internal ClosedContext(IClosedContextClr2Java clr2java) { InstanceId = Guid.NewGuid().ToString("N"); _id = clr2java.GetId(); @@ -40,52 +39,35 @@ namespace Org.Apache.REEF.Driver.Bridge.Events } [DataMember] - public string InstanceId { get; set; } + public string InstanceId { get; private set; } + + private IActiveContextClr2Java ParentContextClr2Java { get; set; } + private IClosedContextClr2Java ClosedContextClr2JavaClr2Java { get; set; } public string Id { - get - { - return _id; - } + get { return _id; } } public string EvaluatorId { - get - { - return _evaluatorId; - } - - set - { - } + get { return _evaluatorId; } } - public Optional<string> ParentId { get; set; } + public Optional<string> ParentId + { + // TODO[REEF-762]: Implement + get { return Optional<string>.Empty(); } + } public IEvaluatorDescriptor EvaluatorDescriptor { - get - { - return ClosedContextClr2JavaClr2Java.GetEvaluatorDescriptor(); - } - - set - { - } + get { return ClosedContextClr2JavaClr2Java.GetEvaluatorDescriptor(); } } public IActiveContext ParentContext { - get - { - return new ActiveContext(ParentContextClr2Java); - } + get { return new ActiveContext(ParentContextClr2Java); } } - - private IActiveContextClr2Java ParentContextClr2Java { get; set; } - - private IClosedContextClr2Java ClosedContextClr2JavaClr2Java { get; set; } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs index 0fe8819..e7ddc17 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs @@ -24,84 +24,55 @@ using Org.Apache.REEF.Utilities; namespace Org.Apache.REEF.Driver.Bridge.Events { - public class FailedContext : IFailedContext + internal class FailedContext : IFailedContext { - private readonly string _id; - private readonly string _evaluatorId; + private readonly string _id; + private readonly Optional<string> _parentId; - private readonly string _parentId; - - public FailedContext(IFailedContextClr2Java clr2Java) + internal FailedContext(IFailedContextClr2Java clr2Java) { _id = clr2Java.GetId(); _evaluatorId = clr2Java.GetEvaluatorId(); - _parentId = clr2Java.GetParentId(); + _parentId = string.IsNullOrEmpty(clr2Java.GetParentId()) + ? Optional<string>.Empty() + : Optional<string>.Of(clr2Java.GetParentId()); FailedContextClr2Java = clr2Java; } + private IFailedContextClr2Java FailedContextClr2Java { get; set; } + public string Id { - get - { - return _id; - } + get { return _id; } } public string EvaluatorId { - get - { - return _evaluatorId; - } - - set - { - } + get { return _evaluatorId; } } public Optional<string> ParentId { - get - { - return string.IsNullOrEmpty(_parentId) ? - Optional<string>.Empty() : - Optional<string>.Of(_parentId); - } - - set - { - } + get { return _parentId; } } public IEvaluatorDescriptor EvaluatorDescriptor { - get - { - return FailedContextClr2Java.GetEvaluatorDescriptor(); - } - - set - { - } + get { return FailedContextClr2Java.GetEvaluatorDescriptor(); } } public Optional<IActiveContext> ParentContext { get { - IActiveContextClr2Java context = FailedContextClr2Java.GetParentContext(); + var context = FailedContextClr2Java.GetParentContext(); if (context != null) { return Optional<IActiveContext>.Of(new ActiveContext(context)); } - else - { - return Optional<IActiveContext>.Empty(); - } + return Optional<IActiveContext>.Empty(); } } - - private IFailedContextClr2Java FailedContextClr2Java { get; set; } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs index 8ba8730..5df22e4 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; using System.Runtime.Serialization; using Org.Apache.REEF.Driver.Bridge.Clr2java; +using Org.Apache.REEF.Driver.Context; using Org.Apache.REEF.Driver.Evaluator; using Org.Apache.REEF.Driver.Task; using Org.Apache.REEF.Utilities; @@ -30,35 +31,50 @@ using Org.Apache.REEF.Utilities.Logging; namespace Org.Apache.REEF.Driver.Bridge.Events { [DataContract] - internal class FailedEvaluator : IFailedEvaluator + internal sealed class FailedEvaluator : IFailedEvaluator { private static readonly Logger LOGGER = Logger.GetLogger(typeof(FailedEvaluator)); + private readonly string _id; public FailedEvaluator(IFailedEvaluatorClr2Java clr2Java) { InstanceId = Guid.NewGuid().ToString("N"); FailedEvaluatorClr2Java = clr2Java; EvaluatorRequestorClr2Java = FailedEvaluatorClr2Java.GetEvaluatorRequestor(); - Id = FailedEvaluatorClr2Java.GetId(); + _id = FailedEvaluatorClr2Java.GetId(); } [DataMember] public string InstanceId { get; set; } - public string Id { get; private set; } - - public EvaluatorException EvaluatorException { get; set; } - - public List<FailedContext> FailedContexts { get; set; } - - public Optional<IFailedTask> FailedTask { get; set; } - [DataMember] private IFailedEvaluatorClr2Java FailedEvaluatorClr2Java { get; set; } [DataMember] private IEvaluatorRequestorClr2Java EvaluatorRequestorClr2Java { get; set; } + public string Id + { + get { return _id; } + } + + //TODO[REEF-769]: Implement + public EvaluatorException EvaluatorException + { + get { return null; } + } + + //TODO[REEF-769]: Implement + public IList<IFailedContext> FailedContexts + { + get { return new List<IFailedContext>(0); } + } + //TODO[REEF-769]: Implement + public Optional<IFailedTask> FailedTask + { + get { return Optional<IFailedTask>.Empty(); } + } + public IEvaluatorRequestor GetEvaluatorRequetor() { if (EvaluatorRequestorClr2Java == null) @@ -68,4 +84,4 @@ namespace Org.Apache.REEF.Driver.Bridge.Events return new EvaluatorRequestor(EvaluatorRequestorClr2Java); } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs b/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs index fd6006c..7f393b5 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs @@ -30,16 +30,16 @@ namespace Org.Apache.REEF.Driver.Context /// <summary> /// the identifier of the Evaluator this EvaluatorContext is instantiated on. /// </summary> - string EvaluatorId { get; set; } + string EvaluatorId { get; } /// <summary> /// ID of the parent context, if there is any. /// </summary> - Optional<string> ParentId { get; set; } + Optional<string> ParentId { get; } /// <summary> /// descriptor of the Evaluator this Context is on. /// </summary> - IEvaluatorDescriptor EvaluatorDescriptor { get; set; } + IEvaluatorDescriptor EvaluatorDescriptor { get; } } } http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/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 bbb06e0..52becb0 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs @@ -19,7 +19,7 @@ using System; using System.Collections.Generic; -using Org.Apache.REEF.Driver.Bridge.Events; +using Org.Apache.REEF.Driver.Context; using Org.Apache.REEF.Driver.Task; using Org.Apache.REEF.Utilities; @@ -28,15 +28,28 @@ namespace Org.Apache.REEF.Driver.Evaluator /// <summary> /// Represents an Evaluator that became unavailable. /// </summary> + /// <remarks> + /// As per REEF-769, this interface isn't actually implemented beyond the Id property. + /// </remarks> public interface IFailedEvaluator : IIdentifiable { - EvaluatorException EvaluatorException { get; set; } + /// <summary> + /// The exception captured on the Evaluator or null if none is available. + /// </summary> + EvaluatorException EvaluatorException { get; } - List<FailedContext> FailedContexts { get; set; } + /// <summary> + /// The list of contexts that were active on the Evaluator when it crashed. + /// </summary> + /// <remarks>The list is empty if there were none.</remarks> + IList<IFailedContext> FailedContexts { get; } - Optional<IFailedTask> FailedTask { get; set; } + /// <summary> + /// The task that failed with the Evaluator if there was one. + /// </summary> + Optional<IFailedTask> FailedTask { get; } [Obsolete("Will be removed after 0.13. Have an instance injected instead.")] IEvaluatorRequestor GetEvaluatorRequetor(); } -} +} \ No newline at end of file
