You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by ju...@apache.org on 2016/01/31 04:59:40 UTC
reef git commit: [REEF-1172] Correct deprecation of
ContextConfiguration for RootContext
Repository: reef
Updated Branches:
refs/heads/master 12daaba3b -> 407041dcd
[REEF-1172] Correct deprecation of ContextConfiguration for RootContext
This addressed the issue by
* Support RootContext backward compatibility.
* Remove backward compatibility support for context stacking.
JIRA:
[REEF-1172](https://issues.apache.org/jira/browse/REEF-1172)
This closes #809
Project: http://git-wip-us.apache.org/repos/asf/reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/407041dc
Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/407041dc
Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/407041dc
Branch: refs/heads/master
Commit: 407041dcdfda5de1f260297452b306df4420c037
Parents: 12daaba
Author: Andrew Chung <af...@gmail.com>
Authored: Fri Jan 29 13:18:06 2016 -0800
Committer: Julia Wang <ju...@microsoft.com>
Committed: Sat Jan 30 19:52:09 2016 -0800
----------------------------------------------------------------------
.../Runtime/Evaluator/Context/ContextManager.cs | 14 +---
.../Runtime/Evaluator/Context/ContextRuntime.cs | 80 ++++++--------------
.../Evaluator/Context/RootContextLauncher.cs | 17 ++++-
.../Runtime/Evaluator/EvaluatorSettings.cs | 37 ++++++++-
4 files changed, 74 insertions(+), 74 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/reef/blob/407041dc/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
index 70316a7..520dce9 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextManager.cs
@@ -51,8 +51,9 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
{
_heartBeatManager = heartBeatManager;
_serializer = serializer;
+
_rootContextLauncher = new RootContextLauncher(
- evaluatorSettings.RootContextConfig.Id,
+ evaluatorSettings.RootContextId,
evaluatorSettings.RootContextConfig,
evaluatorSettings.RootServiceConfiguration,
evaluatorSettings.RootTaskConfiguration);
@@ -283,16 +284,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
Utilities.Diagnostics.Exceptions.Throw(e, LOGGER);
}
- IConfiguration contextConfiguration;
- try
- {
- contextConfiguration = _serializer.FromString(addContextProto.context_configuration);
- }
- catch (Exception)
- {
- // TODO[JIRA REEF-1167]: Remove the catch.
- contextConfiguration = new ContextConfiguration(addContextProto.context_configuration);
- }
+ var contextConfiguration = _serializer.FromString(addContextProto.context_configuration);
ContextRuntime newTopContext;
if (addContextProto.service_configuration != null)
http://git-wip-us.apache.org/repos/asf/reef/blob/407041dc/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
index 5ec7564..953e1cd 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/ContextRuntime.cs
@@ -55,44 +55,6 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
/// <summary>
/// Create a new ContextRuntime.
/// </summary>
- /// <param name="id">ID of the context</param>
- /// <param name="serviceInjector"></param>
- /// <param name="contextConfiguration">the Configuration for this context.</param>
- /// <param name="parentContext"></param>
- /// TODO[JIRA REEF-1167]: Remove constructor.
- [Obsolete("Deprecated in 0.14, will be removed.")]
- public ContextRuntime(
- string id,
- IInjector serviceInjector,
- IConfiguration contextConfiguration,
- Optional<ContextRuntime> parentContext)
- {
- _contextLifeCycle = new ContextLifeCycle(id);
- _serviceInjector = serviceInjector;
- _parentContext = parentContext;
- try
- {
- _contextInjector = serviceInjector.ForkInjector();
- }
- catch (Exception e)
- {
- Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER);
-
- Optional<string> parentId = ParentContext.IsPresent() ?
- Optional<string>.Of(ParentContext.Value.Id) :
- Optional<string>.Empty();
- ContextClientCodeException ex = new ContextClientCodeException(ContextClientCodeException.GetId(contextConfiguration), parentId, "Unable to spawn context", e);
-
- Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
- }
-
- // Trigger the context start events on contextInjector.
- _contextLifeCycle.Start();
- }
-
- /// <summary>
- /// Create a new ContextRuntime.
- /// </summary>
/// <param name="serviceInjector"></param>
/// <param name="contextConfiguration">the Configuration for this context.</param>
/// <param name="parentContext"></param>
@@ -120,9 +82,30 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
string id,
IInjector serviceInjector,
IConfiguration contextConfiguration)
- : this(id, serviceInjector, contextConfiguration, Optional<ContextRuntime>.Empty())
{
+ // This should only be used at the root context to support backward compatibility.
LOGGER.Log(Level.Info, "Instantiating root context");
+ _contextLifeCycle = new ContextLifeCycle(id);
+ _serviceInjector = serviceInjector;
+ _parentContext = Optional<ContextRuntime>.Empty();
+ try
+ {
+ _contextInjector = serviceInjector.ForkInjector();
+ }
+ catch (Exception e)
+ {
+ Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER);
+
+ Optional<string> parentId = ParentContext.IsPresent() ?
+ Optional<string>.Of(ParentContext.Value.Id) :
+ Optional<string>.Empty();
+ ContextClientCodeException ex = new ContextClientCodeException(ContextClientCodeException.GetId(contextConfiguration), parentId, "Unable to spawn context", e);
+
+ Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
+ }
+
+ // Trigger the context start events on contextInjector.
+ _contextLifeCycle.Start();
}
public string Id
@@ -135,18 +118,6 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
get { return _parentContext; }
}
- private static ContextRuntime GetChildContextRuntime(IInjector childServiceInjector, IConfiguration childContextConfiguration, ContextRuntime parentRuntime)
- {
- // TODO[JIRA REEF-1167]: Remove the cast and branch.
- var actualContextConfiguration = childContextConfiguration as ContextConfiguration;
- if (actualContextConfiguration == null)
- {
- return new ContextRuntime(childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(parentRuntime));
- }
-
- return new ContextRuntime(actualContextConfiguration.Id, childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(parentRuntime));
- }
-
/// <summary>
/// Spawns a new context.
/// The new context will have a serviceInjector that is created by forking the one in this object with the given
@@ -174,7 +145,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
try
{
var childServiceInjector = _serviceInjector.ForkInjector(childServiceConfiguration);
- var childContext = GetChildContextRuntime(childServiceInjector, childContextConfiguration, this);
+ var childContext = new ContextRuntime(childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(this));
_childContext = Optional<ContextRuntime>.Of(childContext);
return childContext;
@@ -217,9 +188,8 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
Utilities.Diagnostics.Exceptions.Throw(e, LOGGER);
}
IInjector childServiceInjector = _serviceInjector.ForkInjector();
- ContextRuntime childContext = new ContextRuntime(childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(this));
- _childContext = Optional<ContextRuntime>.Of(childContext);
- return childContext;
+ _childContext = Optional<ContextRuntime>.Of(new ContextRuntime(childServiceInjector, childContextConfiguration, Optional<ContextRuntime>.Of(this)));
+ return _childContext.Value;
}
}
http://git-wip-us.apache.org/repos/asf/reef/blob/407041dc/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
index c7dfece..775da51 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Context/RootContextLauncher.cs
@@ -56,8 +56,17 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
{
if (_rootContext == null)
{
- // TODO[JIRA REEF-1167]: Remove use of this constructor.
- _rootContext = new ContextRuntime(Id, _rootServiceInjector, _rootContextConfiguration);
+ // TODO[JIRA REEF-1167]: Remove use of deprecated ContextRuntime constructor and deprecatedContextConfiguration
+ var deprecatedContextConfiguration = _rootContextConfiguration as ContextConfiguration;
+ if (deprecatedContextConfiguration != null)
+ {
+ LOGGER.Log(Level.Info, "Using deprecated ContextConfiguration.");
+ _rootContext = new ContextRuntime(Id, _rootServiceInjector, _rootContextConfiguration);
+ }
+ else
+ {
+ _rootContext = new ContextRuntime(_rootServiceInjector, _rootContextConfiguration, Optional<ContextRuntime>.Empty());
+ }
}
return _rootContext;
}
@@ -76,9 +85,9 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context
}
catch (Exception e)
{
- Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, "Failed to instantiate service.", LOGGER);
+ Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, "Failed to instantiate service.", LOGGER);
InvalidOperationException ex = new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Failed to inject service: encoutned error {1} with message [{0}] and stack trace:[{1}]", e, e.Message, e.StackTrace));
- Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
+ Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
}
LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, "injected {0} service(s)", services.Services.Count));
}
http://git-wip-us.apache.org/repos/asf/reef/blob/407041dc/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
index d639dd2..fe331da 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/EvaluatorSettings.cs
@@ -16,6 +16,7 @@
// under the License.
using System;
+using Org.Apache.REEF.Common.Context;
using Org.Apache.REEF.Common.Evaluator;
using Org.Apache.REEF.Common.Io;
using Org.Apache.REEF.Common.Protobuf.ReefProtocol;
@@ -26,6 +27,7 @@ using Org.Apache.REEF.Common.Services;
using Org.Apache.REEF.Common.Tasks;
using Org.Apache.REEF.Tang.Annotations;
using Org.Apache.REEF.Tang.Exceptions;
+using Org.Apache.REEF.Tang.Formats;
using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Utilities;
using Org.Apache.REEF.Utilities.Logging;
@@ -41,12 +43,14 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
private readonly string _applicationId;
private readonly string _evaluatorId;
+ private readonly string _rootContextId;
private readonly int _heartBeatPeriodInMs;
private readonly int _maxHeartbeatRetries;
private readonly IClock _clock;
private readonly IRemoteManager<REEFMessage> _remoteManager;
private readonly IInjector _injector;
- private readonly ContextConfiguration _rootContextConfig;
+ private readonly IConfiguration _rootContextConfig;
+ private readonly AvroConfigurationSerializer _serializer;
private readonly Optional<TaskConfiguration> _rootTaskConfiguration;
private readonly Optional<ServiceConfiguration> _rootServiceConfiguration;
@@ -61,6 +65,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
/// <param name="heartbeatPeriodInMs"></param>
/// <param name="maxHeartbeatRetries"></param>
/// <param name="rootContextConfigString"></param>
+ /// <param name="serializer"></param>
/// <param name="clock"></param>
/// <param name="remoteManagerFactory"></param>
/// <param name="reefMessageCodec"></param>
@@ -72,11 +77,13 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
[Parameter(typeof(EvaluatorHeartbeatPeriodInMs))] int heartbeatPeriodInMs,
[Parameter(typeof(HeartbeatMaxRetry))] int maxHeartbeatRetries,
[Parameter(typeof(RootContextConfiguration))] string rootContextConfigString,
+ AvroConfigurationSerializer serializer,
RuntimeClock clock,
IRemoteManagerFactory remoteManagerFactory,
REEFMessageCodec reefMessageCodec,
IInjector injector)
{
+ _serializer = serializer;
_injector = injector;
_applicationId = applicationId;
_evaluatorId = evaluatorId;
@@ -89,7 +96,22 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
Utilities.Diagnostics.Exceptions.Throw(
new ArgumentException("empty or null rootContextConfigString"), Logger);
}
- _rootContextConfig = new ContextConfiguration(rootContextConfigString);
+ _rootContextConfig = _serializer.FromString(rootContextConfigString);
+
+ try
+ {
+ _rootContextId = injector.ForkInjector(_rootContextConfig).GetNamedInstance<ContextConfigurationOptions.ContextIdentifier, string>();
+ }
+ catch (InjectionException)
+ {
+ Logger.Log(Level.Info, "Using deprecated ContextConfiguration.");
+
+ // TODO[JIRA REEF-1167]: Remove this catch.
+ var deprecatedContextConfig = new Context.ContextConfiguration(rootContextConfigString);
+ _rootContextConfig = deprecatedContextConfig;
+ _rootContextId = deprecatedContextConfig.Id;
+ }
+
_rootTaskConfiguration = CreateTaskConfiguration();
_rootServiceConfiguration = CreateRootServiceConfiguration();
@@ -125,6 +147,14 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
}
/// <summary>
+ /// Returns the root context ID.
+ /// </summary>
+ public string RootContextId
+ {
+ get { return _rootContextId; }
+ }
+
+ /// <summary>
/// Return HeartBeatPeriodInMs from NamedParameter
/// </summary>
public int HeartBeatPeriodInMs
@@ -160,8 +190,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator
/// <summary>
/// return Root Context Configuration passed from Evaluator configuration
/// </summary>
- /// TODO[JIRA REEF-1167]: Change this to use IConfiguration.
- public ContextConfiguration RootContextConfig
+ public IConfiguration RootContextConfig
{
get { return _rootContextConfig; }
}