Repository: reef Updated Branches: refs/heads/master fe9771096 -> ce9e85cc4
[REEF-217] Evaluator reads the driver configuration (it shouldn't) This addressed the issue by * Fork Evaluators off of the main EvaluatorConfiguration. * Fix up configuration parameters that used to depend on DriverConfiguration. JIRA: [REEF-217](https://issues.apache.org/jira/browse/REEF-217) This closes #919 Project: http://git-wip-us.apache.org/repos/asf/reef/repo Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/ce9e85cc Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/ce9e85cc Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/ce9e85cc Branch: refs/heads/master Commit: ce9e85cc4a7c4976dc0b1247415ff366e3562b3f Parents: fe97710 Author: Andrew Chung <[email protected]> Authored: Fri Apr 1 17:30:41 2016 -0700 Committer: Julia Wang <[email protected]> Committed: Mon Apr 4 13:17:42 2016 -0700 ---------------------------------------------------------------------- .../Common/DriverFolderPreparationHelper.cs | 4 -- .../DefaultYarnClusterHttpDriverConnection.cs | 10 +++-- .../DefaultYarnOneBoxHttpDriverConnection.cs | 9 ++-- .../Runtime/Evaluator/Context/ContextManager.cs | 46 +++----------------- .../Runtime/Evaluator/Context/ContextRuntime.cs | 4 +- .../Evaluator/Context/RootContextLauncher.cs | 45 +++++++++++++++---- .../Bridge/DriverBridge.cs | 13 +++++- .../ContextRuntimeTests.cs | 10 ++--- lang/cs/Org.Apache.REEF.Evaluator/Evaluator.cs | 37 +--------------- .../DriverRestart.cs | 3 +- 10 files changed, 72 insertions(+), 109 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Client/Common/DriverFolderPreparationHelper.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Client/Common/DriverFolderPreparationHelper.cs b/lang/cs/Org.Apache.REEF.Client/Common/DriverFolderPreparationHelper.cs index 8996a2a..4f3f811 100644 --- a/lang/cs/Org.Apache.REEF.Client/Common/DriverFolderPreparationHelper.cs +++ b/lang/cs/Org.Apache.REEF.Client/Common/DriverFolderPreparationHelper.cs @@ -106,10 +106,6 @@ namespace Org.Apache.REEF.Client.Common _configurationSerializer.ToFile(driverConfiguration, Path.Combine(driverFolderPath, _fileNames.GetClrDriverConfigurationPath())); - - // TODO: Remove once we cleaned up the Evaluator to not expect this [REEF-217] - _configurationSerializer.ToFile(driverConfiguration, - Path.Combine(driverFolderPath, _fileNames.GetGlobalFolderPath(), _fileNames.GetClrBridgeConfigurationName())); } /// <summary> http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnClusterHttpDriverConnection.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnClusterHttpDriverConnection.cs b/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnClusterHttpDriverConnection.cs index 367c50d..aacb957 100644 --- a/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnClusterHttpDriverConnection.cs +++ b/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnClusterHttpDriverConnection.cs @@ -17,6 +17,7 @@ using System; using Org.Apache.REEF.Tang.Annotations; +using Org.Apache.REEF.Utilities; namespace Org.Apache.REEF.Common.Evaluator { @@ -28,14 +29,15 @@ namespace Org.Apache.REEF.Common.Evaluator private DefaultYarnClusterHttpDriverConnection() { _applicationId = Environment.GetEnvironmentVariable(Constants.ReefYarnApplicationIdEnvironmentVariable); - if (_applicationId == null) - { - throw new ApplicationException("Could not fetch the application ID from YARN's container environment variables."); - } } public DriverInformation GetDriverInformation() { + if (string.IsNullOrWhiteSpace(_applicationId)) + { + throw new ApplicationException("Could not fetch the application ID from YARN's container environment variables."); + } + // e.g., http://headnodehost:9014/proxy/application_1407519727821_0012/reef/v1/driver Uri queryUri = new Uri( string.Concat( http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnOneBoxHttpDriverConnection.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnOneBoxHttpDriverConnection.cs b/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnOneBoxHttpDriverConnection.cs index ed0cfdf..6d8d322 100644 --- a/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnOneBoxHttpDriverConnection.cs +++ b/lang/cs/Org.Apache.REEF.Common/Evaluator/DefaultYarnOneBoxHttpDriverConnection.cs @@ -29,14 +29,15 @@ namespace Org.Apache.REEF.Common.Evaluator private DefaultYarnOneBoxHttpDriverConnection() { _applicationId = Environment.GetEnvironmentVariable(Constants.ReefYarnApplicationIdEnvironmentVariable); - if (_applicationId == null) - { - throw new ApplicationException("Could not fetch the application ID from YARN's container environment variables."); - } } public DriverInformation GetDriverInformation() { + if (string.IsNullOrWhiteSpace(_applicationId)) + { + throw new ApplicationException("Could not fetch the application ID from YARN's container environment variables."); + } + // e.g., http://yingdac1:8088/proxy/application_1407519727821_0012/reef/v1/driver string oneBoxHost = string.Format(CultureInfo.InvariantCulture, "http://{0}:8088/proxy/", Environment.MachineName); Uri queryUri = new Uri( http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/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 f959cca..1d3fed2 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 @@ -22,11 +22,9 @@ using System.Globalization; using System.Linq; using Org.Apache.REEF.Common.Protobuf.ReefProtocol; using Org.Apache.REEF.Common.Runtime.Evaluator.Task; -using Org.Apache.REEF.Common.Runtime.Evaluator.Utils; using Org.Apache.REEF.Common.Tasks; using Org.Apache.REEF.Tang.Annotations; using Org.Apache.REEF.Tang.Formats; -using Org.Apache.REEF.Tang.Interface; using Org.Apache.REEF.Utilities; using Org.Apache.REEF.Utilities.Logging; @@ -43,45 +41,13 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context [Inject] private ContextManager( - IHeartBeatManager heartBeatManager, - AvroConfigurationSerializer serializer, - [Parameter(typeof(RootContextConfiguration))] string rootContextConfiguration, - [Parameter(typeof(RootServiceConfiguration))] string rootServiceConfiguration) - : this(heartBeatManager, serializer, serializer.FromString(rootContextConfiguration), - serializer.FromString(rootServiceConfiguration), Optional<IConfiguration>.Empty()) - { - } - - [Inject] - private ContextManager( - IHeartBeatManager heartBeatManager, AvroConfigurationSerializer serializer, - [Parameter(typeof(RootContextConfiguration))] string rootContextConfiguration, - [Parameter(typeof(RootServiceConfiguration))] string rootServiceConfiguration, - [Parameter(typeof(InitialTaskConfiguration))] string initialTaskConfiguration) - : this(heartBeatManager, serializer, serializer.FromString(rootContextConfiguration), - serializer.FromString(rootServiceConfiguration), Optional<IConfiguration>.Of(serializer.FromString(initialTaskConfiguration))) - { - } - - private ContextManager( IHeartBeatManager heartBeatManager, - AvroConfigurationSerializer serializer, - IConfiguration rootContextConfiguration, - IConfiguration rootServiceConfiguration, - Optional<IConfiguration> initialTaskConfiguration) + RootContextLauncher rootContextLauncher) { - using (LOGGER.LogFunction("ContextManager::ContextManager")) - { - _heartBeatManager = heartBeatManager; - _serializer = serializer; - - _rootContextLauncher = new RootContextLauncher( - rootContextConfiguration, - rootServiceConfiguration, - initialTaskConfiguration, - heartBeatManager); - } + _rootContextLauncher = rootContextLauncher; + _heartBeatManager = heartBeatManager; + _serializer = serializer; } /// <summary> @@ -99,7 +65,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context LOGGER.Log(Level.Info, "Launching the initial Task"); try { - _topContext.StartTask(_rootContextLauncher.RootTaskConfig.Value, _heartBeatManager); + _topContext.StartTask(_rootContextLauncher.RootTaskConfig.Value); } catch (TaskClientCodeException e) { @@ -372,7 +338,7 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context } var configuration = _serializer.FromString(startTaskProto.configuration); - currentActiveContext.StartTask(configuration, _heartBeatManager); + currentActiveContext.StartTask(configuration); } } http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/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 7bc0863..9901a6f 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 @@ -193,11 +193,9 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context /// <summary> /// Launches an Task on this context. - /// TODO[JIRA REEF-217]: Remove heartBeatManager from argument. /// </summary> /// <param name="taskConfiguration"></param> - /// <param name="heartBeatManager"></param> - public void StartTask(IConfiguration taskConfiguration, IHeartBeatManager heartBeatManager) + public void StartTask(IConfiguration taskConfiguration) { lock (_contextLifeCycle) { http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/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 2f18816..165bc4d 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 @@ -15,14 +15,15 @@ // specific language governing permissions and limitations // under the License. -using System; using System.Collections.Generic; using System.Globalization; using Org.Apache.REEF.Common.Context; +using Org.Apache.REEF.Common.Runtime.Evaluator.Utils; using Org.Apache.REEF.Common.Services; +using Org.Apache.REEF.Tang.Annotations; +using Org.Apache.REEF.Tang.Formats; using Org.Apache.REEF.Tang.Implementations.Tang; using Org.Apache.REEF.Tang.Interface; -using Org.Apache.REEF.Tang.Util; using Org.Apache.REEF.Utilities; using Org.Apache.REEF.Utilities.Logging; @@ -40,20 +41,46 @@ namespace Org.Apache.REEF.Common.Runtime.Evaluator.Context private ISet<object> _services; private ContextRuntime _rootContext; - public RootContextLauncher( - IConfiguration contextConfiguration, - IConfiguration rootServiceConfig, - Optional<IConfiguration> rootTaskConfig, - IHeartBeatManager heartbeatManager) + [Inject] + private RootContextLauncher( + AvroConfigurationSerializer serializer, + [Parameter(typeof(RootContextConfiguration))] string rootContextConfiguration, + [Parameter(typeof(RootServiceConfiguration))] string rootServiceConfiguration, + IInjector injector) + : this(serializer.FromString(rootContextConfiguration), + serializer.FromString(rootServiceConfiguration), + Optional<IConfiguration>.Empty(), + injector) + { + } + + [Inject] + private RootContextLauncher( + AvroConfigurationSerializer serializer, + [Parameter(typeof(RootContextConfiguration))] string rootContextConfiguration, + [Parameter(typeof(RootServiceConfiguration))] string rootServiceConfiguration, + [Parameter(typeof(InitialTaskConfiguration))] string initialTaskConfiguration, + IInjector injector) + : this(serializer.FromString(rootContextConfiguration), + serializer.FromString(rootServiceConfiguration), + Optional<IConfiguration>.Of(serializer.FromString(initialTaskConfiguration)), + injector) + { + } + + private RootContextLauncher( + IConfiguration contextConfiguration, + IConfiguration rootServiceConfig, + Optional<IConfiguration> rootTaskConfig, + IInjector injector) { _rootContextConfiguration = contextConfiguration; - _rootServiceInjector = TangFactory.GetTang().NewInjector(rootServiceConfig); + _rootServiceInjector = injector.ForkInjector(rootServiceConfig); Id = _rootServiceInjector .ForkInjector(contextConfiguration) .GetNamedInstance<ContextConfigurationOptions.ContextIdentifier, string>(); _services = _rootServiceInjector.GetNamedInstance<ServicesSet, ISet<object>>(); Logger.Log(Level.Verbose, string.Format(CultureInfo.InvariantCulture, "injected service(s)")); - _rootServiceInjector.BindVolatileInstance(GenericType<IHeartBeatManager>.Class, heartbeatManager); RootTaskConfig = rootTaskConfig; } http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs index baa8eb8..795aefe 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/DriverBridge.cs @@ -146,6 +146,7 @@ namespace Org.Apache.REEF.Driver.Bridge [Parameter(Value = typeof(EvaluatorConfigurationProviders))] ISet<IConfigurationProvider> configurationProviders, [Parameter(Value = typeof(DriverBridgeConfigurationOptions.TraceLevel))] string traceLevel, IDriverReconnConfigProvider driverReconnConfigProvider, + IDriverConnection driverConnection, HttpServerHandler httpServerHandler, IProgressProvider progressProvider) { @@ -190,7 +191,7 @@ namespace Org.Apache.REEF.Driver.Bridge // TODO[JIRA REEF-1306]: Remove after it is bound directly into EvaluatorConfigurationProviders. _configurationProviders = new HashSet<IConfigurationProvider>(configurationProviders) { - GetDriverReconnectionProvider(driverReconnConfigProvider) + GetDriverReconnectionProvider(driverReconnConfigProvider, driverConnection) }; _progressProvider = progressProvider; @@ -216,7 +217,8 @@ namespace Org.Apache.REEF.Driver.Bridge } private static IDriverReconnConfigProvider GetDriverReconnectionProvider( - IDriverReconnConfigProvider driverReconnConfigProvider) + IDriverReconnConfigProvider driverReconnConfigProvider, + IDriverConnection driverConnection) { // If not the default, this means that the user has bound the newer configuration. Return it. if (!(driverReconnConfigProvider is DefaultDriverReconnConfigProvider)) @@ -224,6 +226,13 @@ namespace Org.Apache.REEF.Driver.Bridge return driverReconnConfigProvider; } + // If not default, this means that the user has bound the old configuration. + // Use the dynamic configuration provider in that case. + if (!(driverConnection is MissingDriverConnection)) + { + return new DynamicDriverReconnConfigProvider(driverConnection.GetType()); + } + // This is done as a stop gap for deprecation because we cannot bind an implementation // of IDriverConnection to the driver CLRBridgeConfiguration if it is already bound // by the user, since the driver configuration and Evaluator configuration will be combined http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Evaluator.Tests/ContextRuntimeTests.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Evaluator.Tests/ContextRuntimeTests.cs b/lang/cs/Org.Apache.REEF.Evaluator.Tests/ContextRuntimeTests.cs index da540a3..9a2ff96 100644 --- a/lang/cs/Org.Apache.REEF.Evaluator.Tests/ContextRuntimeTests.cs +++ b/lang/cs/Org.Apache.REEF.Evaluator.Tests/ContextRuntimeTests.cs @@ -211,7 +211,7 @@ namespace Org.Apache.REEF.Evaluator.Tests { var hbMgr = Substitute.For<IHeartBeatManager>(); contextRuntime.ContextInjector.BindVolatileInstance(GenericType<IHeartBeatManager>.Class, hbMgr); - contextRuntime.StartTask(taskConfig, hbMgr); + contextRuntime.StartTask(taskConfig); Assert.True(contextRuntime.TaskRuntime.IsPresent()); Assert.True(contextRuntime.GetTaskStatus().IsPresent()); @@ -255,14 +255,14 @@ namespace Org.Apache.REEF.Evaluator.Tests { var hbMgr = Substitute.For<IHeartBeatManager>(); contextRuntime.ContextInjector.BindVolatileInstance(GenericType<IHeartBeatManager>.Class, hbMgr); - contextRuntime.StartTask(taskConfig, hbMgr); + contextRuntime.StartTask(taskConfig); Assert.True(contextRuntime.TaskRuntime.IsPresent()); Assert.True(contextRuntime.GetTaskStatus().IsPresent()); Assert.Equal(contextRuntime.GetTaskStatus().Value.state, State.RUNNING); Assert.Throws<InvalidOperationException>( - () => contextRuntime.StartTask(taskConfig, hbMgr)); + () => contextRuntime.StartTask(taskConfig)); } finally { @@ -296,7 +296,7 @@ namespace Org.Apache.REEF.Evaluator.Tests var hbMgr = Substitute.For<IHeartBeatManager>(); contextRuntime.ContextInjector.BindVolatileInstance(GenericType<IHeartBeatManager>.Class, hbMgr); - contextRuntime.StartTask(taskConfig, hbMgr); + contextRuntime.StartTask(taskConfig); var testTask = contextRuntime.TaskRuntime.Value.Task as TestTask; if (testTask == null) { @@ -308,7 +308,7 @@ namespace Org.Apache.REEF.Evaluator.Tests Assert.False(contextRuntime.GetTaskStatus().IsPresent()); testTask.DisposedEvent.Wait(); - contextRuntime.StartTask(taskConfig, hbMgr); + contextRuntime.StartTask(taskConfig); Assert.Equal(contextRuntime.GetTaskStatus().Value.state, State.RUNNING); var secondTestTask = contextRuntime.TaskRuntime.Value.Task as TestTask; http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Evaluator/Evaluator.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Evaluator/Evaluator.cs b/lang/cs/Org.Apache.REEF.Evaluator/Evaluator.cs index 82b12f3..4f37c72 100644 --- a/lang/cs/Org.Apache.REEF.Evaluator/Evaluator.cs +++ b/lang/cs/Org.Apache.REEF.Evaluator/Evaluator.cs @@ -22,11 +22,9 @@ using System.Globalization; using System.IO; using System.Linq; using System.Threading; -using Org.Apache.REEF.Common.Files; using Org.Apache.REEF.Common.Runtime.Evaluator; using Org.Apache.REEF.Common.Runtime.Evaluator.Utils; using Org.Apache.REEF.Driver.Bridge; -using Org.Apache.REEF.Evaluator.Exceptions; using Org.Apache.REEF.Tang.Annotations; using Org.Apache.REEF.Tang.Formats; using Org.Apache.REEF.Tang.Implementations.InjectionPlan; @@ -85,10 +83,7 @@ namespace Org.Apache.REEF.Evaluator var serializer = injector.GetInstance<AvroConfigurationSerializer>(); var rootEvaluatorConfiguration = serializer.FromString(injector.GetNamedInstance<EvaluatorConfiguration, string>()); - var evaluator = injector.ForkInjector( - ReadClrBridgeConfiguration(), - rootEvaluatorConfiguration) - .GetInstance<Evaluator>(); + var evaluator = injector.ForkInjector(rootEvaluatorConfiguration).GetInstance<Evaluator>(); evaluator.Run(); logger.Log(Level.Info, "Evaluator is returned from Run()"); @@ -129,36 +124,6 @@ namespace Org.Apache.REEF.Evaluator } /// <summary> - /// Reads the Evaluator Configuration. - /// </summary> - /// <exception cref="EvaluatorConfigurationFileNotFoundException">When the configuration file cannot be found.</exception> - /// <exception cref="EvaluatorConfigurationParseException">When the configuration file exists, but can't be deserialized.</exception> - /// <returns></returns> - //// TODO[JIRA REEF-217]: Remove this method. - private static IConfiguration ReadClrBridgeConfiguration() - { - var clrRuntimeConfigurationFile = Path.Combine(Directory.GetCurrentDirectory(), "reef", "global", - new REEFFileNames().GetClrBridgeConfigurationName()); - - if (!File.Exists(clrRuntimeConfigurationFile)) - { - throw new EvaluatorConfigurationFileNotFoundException(clrRuntimeConfigurationFile); - } - - try - { - var clrDriverConfig = new AvroConfigurationSerializer().FromFile(clrRuntimeConfigurationFile); - logger.Log(Level.Info, - string.Format(CultureInfo.CurrentCulture, "Clr Driver Configuration is deserialized from file {0}:", clrRuntimeConfigurationFile)); - return clrDriverConfig; - } - catch (Exception e) - { - throw new EvaluatorConfigurationParseException(e); - } - } - - /// <summary> /// Read evaluator configuration from evaluator.conf generated from Java /// </summary> /// <param name="evaluatorConfigFile"></param> http://git-wip-us.apache.org/repos/asf/reef/blob/ce9e85cc/lang/cs/Org.Apache.REEF.Examples.DriverRestart/DriverRestart.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Examples.DriverRestart/DriverRestart.cs b/lang/cs/Org.Apache.REEF.Examples.DriverRestart/DriverRestart.cs index fb27128..9aca5df 100644 --- a/lang/cs/Org.Apache.REEF.Examples.DriverRestart/DriverRestart.cs +++ b/lang/cs/Org.Apache.REEF.Examples.DriverRestart/DriverRestart.cs @@ -63,8 +63,7 @@ namespace Org.Apache.REEF.Examples.DriverRestart .Set(DriverConfiguration.OnEvaluatorAllocated, GenericType<HelloRestartDriver>.Class) .Set(DriverConfiguration.OnEvaluatorFailed, GenericType<HelloRestartDriver>.Class) .Set(DriverConfiguration.OnDriverRestartEvaluatorFailed, GenericType<HelloRestartDriver>.Class) - .Set(DriverConfiguration.DriverReconnectionConfigurationProvider, - GenericType<YarnClusterHttpDriverReconnConfigProvider>.Class) + .Set(DriverConfiguration.OnDriverReconnect, GenericType<DefaultYarnClusterHttpDriverConnection>.Class) .Set(DriverConfiguration.DriverRestartEvaluatorRecoverySeconds, (5 * 60).ToString()) .Build();
