You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by we...@apache.org on 2015/05/21 02:46:10 UTC
incubator-reef git commit: [REEF-324]:Propagate clr tcpprovider
bindings to java
Repository: incubator-reef
Updated Branches:
refs/heads/master 8068dc978 -> b9686cd79
[REEF-324]:Propagate clr tcpprovider bindings to java
This addressed the issue by passing specific tcp bindings from clr to
java side.
JIRA:
[REEF-324](https://issues.apache.org/jira/browse/REEF-324)
Pull Request:
This closes #185
Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/b9686cd7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/b9686cd7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/b9686cd7
Branch: refs/heads/master
Commit: b9686cd79d11c22ef99cc5d9f6095a41e08a125b
Parents: 8068dc9
Author: Beysim Sezgin <se...@apache.org>
Authored: Wed May 20 17:39:31 2015 -0700
Committer: Markus Weimer <we...@apache.org>
Committed: Wed May 20 17:41:55 2015 -0700
----------------------------------------------------------------------
.../ClrClient2JavaClientCuratedParameters.cs | 45 ++++++++++++
.../Org.Apache.REEF.Client/Local/LocalClient.cs | 21 ++++--
.../Local/LocalRuntimeClientConfiguration.cs | 33 ---------
.../Org.Apache.REEF.Client.csproj | 1 +
.../Org.Apache.REEF.Client/YARN/YARNClient.cs | 13 +++-
.../YARN/YARNClientConfiguration.cs | 36 ---------
.../Remote/Impl/DefaultRemoteManager.cs | 4 +
.../apache/reef/bridge/client/LocalClient.java | 62 +++++++++++++---
.../bridge/client/YarnJobSubmissionClient.java | 37 +++++++---
.../reef/io/TcpPortConfigurationProvider.java | 77 ++++++++++++++++++++
.../reef/io/network/naming/NameServerImpl.java | 9 ++-
.../local/client/LocalRuntimeConfiguration.java | 19 +----
.../yarn/client/YarnClientConfiguration.java | 20 +----
.../wake/remote/ports/RangeTcpPortProvider.java | 15 +---
.../reef/wake/remote/ports/TcpPortProvider.java | 10 +--
15 files changed, 248 insertions(+), 154 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Client/Common/ClrClient2JavaClientCuratedParameters.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/Common/ClrClient2JavaClientCuratedParameters.cs b/lang/cs/Org.Apache.REEF.Client/Common/ClrClient2JavaClientCuratedParameters.cs
new file mode 100644
index 0000000..e40ab59
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Client/Common/ClrClient2JavaClientCuratedParameters.cs
@@ -0,0 +1,45 @@
+/*
+ * 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 Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Wake.Remote.Parameters;
+
+namespace Org.Apache.REEF.Client.Common
+{
+ internal class ClrClient2JavaClientCuratedParameters
+ {
+ public int TcpPortRangeStart { get; private set; }
+ public int TcpPortRangeCount { get; private set; }
+ public int TcpPortRangeTryCount { get; private set; }
+ public int TcpPortRangeSeed { get; private set; }
+
+
+ [Inject]
+ private ClrClient2JavaClientCuratedParameters(
+ [Parameter(typeof(TcpPortRangeStart))] int tcpPortRangeStart,
+ [Parameter(typeof(TcpPortRangeCount))] int tcpPortRangeCount,
+ [Parameter(typeof(TcpPortRangeTryCount))] int tcpPortRangeTryCount,
+ [Parameter(typeof(TcpPortRangeSeed))] int tcpPortRangeSeed)
+ {
+ TcpPortRangeStart = tcpPortRangeStart;
+ TcpPortRangeCount = tcpPortRangeCount;
+ TcpPortRangeTryCount = tcpPortRangeTryCount;
+ TcpPortRangeSeed = tcpPortRangeSeed;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Client/Local/LocalClient.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/Local/LocalClient.cs b/lang/cs/Org.Apache.REEF.Client/Local/LocalClient.cs
index 3c4316c..518533e 100644
--- a/lang/cs/Org.Apache.REEF.Client/Local/LocalClient.cs
+++ b/lang/cs/Org.Apache.REEF.Client/Local/LocalClient.cs
@@ -19,10 +19,12 @@
using System;
using System.IO;
+using System.Linq;
using Org.Apache.REEF.Client.API;
using Org.Apache.REEF.Client.Common;
using Org.Apache.REEF.Client.Local.Parameters;
using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Implementations.Tang;
using Org.Apache.REEF.Utilities.Logging;
namespace Org.Apache.REEF.Client.Local
@@ -42,7 +44,7 @@ namespace Org.Apache.REEF.Client.Local
/// </summary>
private const string DriverFolderName = "driver";
- private static readonly Logger Logger = Logger.GetLogger(typeof (LocalClient));
+ private static readonly Logger Logger = Logger.GetLogger(typeof(LocalClient));
private readonly DriverFolderPreparationHelper _driverFolderPreparationHelper;
private readonly JavaClientLauncher _javaClientLauncher;
private readonly int _numberOfEvaluators;
@@ -50,8 +52,8 @@ namespace Org.Apache.REEF.Client.Local
[Inject]
private LocalClient(DriverFolderPreparationHelper driverFolderPreparationHelper,
- [Parameter(typeof (LocalRuntimeDirectory))] string runtimeFolder,
- [Parameter(typeof (NumberOfEvaluators))] int numberOfEvaluators, JavaClientLauncher javaClientLauncher)
+ [Parameter(typeof(LocalRuntimeDirectory))] string runtimeFolder,
+ [Parameter(typeof(NumberOfEvaluators))] int numberOfEvaluators, JavaClientLauncher javaClientLauncher)
{
_driverFolderPreparationHelper = driverFolderPreparationHelper;
_runtimeFolder = runtimeFolder;
@@ -68,7 +70,7 @@ namespace Org.Apache.REEF.Client.Local
[Inject]
private LocalClient(
DriverFolderPreparationHelper driverFolderPreparationHelper,
- [Parameter(typeof (NumberOfEvaluators))] int numberOfEvaluators, JavaClientLauncher javaClientLauncher)
+ [Parameter(typeof(NumberOfEvaluators))] int numberOfEvaluators, JavaClientLauncher javaClientLauncher)
: this(driverFolderPreparationHelper, Path.GetTempPath(), numberOfEvaluators, javaClientLauncher)
{
// Intentionally left blank.
@@ -83,8 +85,17 @@ namespace Org.Apache.REEF.Client.Local
_driverFolderPreparationHelper.PrepareDriverFolder(jobSubmission, driverFolder);
+ //TODO: Remove this when we have a generalized way to pass config to java
+ var javaParams = TangFactory.GetTang()
+ .NewInjector(jobSubmission.DriverConfigurations.ToArray())
+ .GetInstance<ClrClient2JavaClientCuratedParameters>();
+
_javaClientLauncher.Launch(JavaClassName, driverFolder, jobSubmission.JobIdentifier,
- _numberOfEvaluators.ToString());
+ _numberOfEvaluators.ToString(),
+ javaParams.TcpPortRangeStart.ToString(),
+ javaParams.TcpPortRangeCount.ToString(),
+ javaParams.TcpPortRangeTryCount.ToString()
+ );
Logger.Log(Level.Info, "Submitted the Driver for execution.");
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Client/Local/LocalRuntimeClientConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/Local/LocalRuntimeClientConfiguration.cs b/lang/cs/Org.Apache.REEF.Client/Local/LocalRuntimeClientConfiguration.cs
index 2504a5d..20c3c98 100644
--- a/lang/cs/Org.Apache.REEF.Client/Local/LocalRuntimeClientConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Client/Local/LocalRuntimeClientConfiguration.cs
@@ -20,9 +20,7 @@
using Org.Apache.REEF.Client.API;
using Org.Apache.REEF.Client.Local.Parameters;
using Org.Apache.REEF.Tang.Formats;
-using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Tang.Util;
-using Org.Apache.REEF.Wake.Remote.Parameters;
namespace Org.Apache.REEF.Client.Local
{
@@ -47,41 +45,10 @@ namespace Org.Apache.REEF.Client.Local
/// </remarks>
public static readonly OptionalParameter<string> RuntimeFolder = new OptionalParameter<string>();
- /// <summary>
- /// Configuration provides whose Configuration will be merged into all Driver Configuration.
- /// </summary>
- public static readonly OptionalImpl<IConfigurationProvider> DriverConfigurationProvider =
- new OptionalImpl<IConfigurationProvider>();
-
- /// <summary>
- /// Start of the tcp port range for listening.
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeStartParameter = new OptionalParameter<int>();
-
- /// <summary>
- /// Number of port for the tcp port range for listening.
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeCountParameter = new OptionalParameter<int>();
-
- /// <summary>
- /// Max number of times we will deliver a port from the tcp port range.
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeTryCountParameter = new OptionalParameter<int>();
-
- /// <summary>
- /// Seed for the number number for determining which particular port to deliver from the range
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeSeedParameter = new OptionalParameter<int>();
-
public static ConfigurationModule ConfigurationModule = new LocalRuntimeClientConfiguration()
.BindImplementation(GenericType<IREEFClient>.Class, GenericType<LocalClient>.Class)
.BindNamedParameter(GenericType<LocalRuntimeDirectory>.Class, RuntimeFolder)
.BindNamedParameter(GenericType<NumberOfEvaluators>.Class, NumberOfEvaluators)
- .BindSetEntry(GenericType<DriverConfigurationProviders>.Class, DriverConfigurationProvider)
- .BindNamedParameter(GenericType<TcpPortRangeStart>.Class, TcpPortRangeStartParameter)
- .BindNamedParameter(GenericType<TcpPortRangeCount>.Class, TcpPortRangeCountParameter)
- .BindNamedParameter(GenericType<TcpPortRangeTryCount>.Class, TcpPortRangeTryCountParameter)
- .BindNamedParameter(GenericType<TcpPortRangeSeed>.Class, TcpPortRangeSeedParameter)
.Build();
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj b/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
index fde24ed..0deb829 100644
--- a/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
+++ b/lang/cs/Org.Apache.REEF.Client/Org.Apache.REEF.Client.csproj
@@ -50,6 +50,7 @@ under the License.
<Compile Include="API\JobSubmissionBuilderFactory.cs" />
<Compile Include="CLRBridgeClient.cs" />
<Compile Include="Common\ClientConstants.cs" />
+ <Compile Include="Common\ClrClient2JavaClientCuratedParameters.cs" />
<Compile Include="Common\DriverFolderPreparationHelper.cs" />
<Compile Include="Common\FileSets.cs" />
<Compile Include="Common\JavaClientLauncher.cs" />
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Client/YARN/YARNClient.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/YARN/YARNClient.cs b/lang/cs/Org.Apache.REEF.Client/YARN/YARNClient.cs
index 93a53a0..b6fcc0c 100644
--- a/lang/cs/Org.Apache.REEF.Client/YARN/YARNClient.cs
+++ b/lang/cs/Org.Apache.REEF.Client/YARN/YARNClient.cs
@@ -19,9 +19,11 @@
using System;
using System.IO;
+using System.Linq;
using Org.Apache.REEF.Client.API;
using Org.Apache.REEF.Client.Common;
using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Implementations.Tang;
using Org.Apache.REEF.Utilities.Logging;
namespace Org.Apache.REEF.Client.YARN
@@ -55,9 +57,18 @@ namespace Org.Apache.REEF.Client.YARN
_driverFolderPreparationHelper.PrepareDriverFolder(jobSubmission, driverFolderPath);
+ //TODO: Remove this when we have a generalized way to pass config to java
+ var javaParams = TangFactory.GetTang()
+ .NewInjector(jobSubmission.DriverConfigurations.ToArray())
+ .GetInstance<ClrClient2JavaClientCuratedParameters>();
+
// Submit the driver
_javaClientLauncher.Launch(JavaClassName, driverFolderPath, jobSubmission.JobIdentifier,
- jobSubmission.DriverMemory.ToString());
+ jobSubmission.DriverMemory.ToString(),
+ javaParams.TcpPortRangeStart.ToString(),
+ javaParams.TcpPortRangeCount.ToString(),
+ javaParams.TcpPortRangeTryCount.ToString()
+ );
Logger.Log(Level.Info, "Submitted the Driver for execution.");
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Client/YARN/YARNClientConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Client/YARN/YARNClientConfiguration.cs b/lang/cs/Org.Apache.REEF.Client/YARN/YARNClientConfiguration.cs
index 69c4b29..ad53d0c 100644
--- a/lang/cs/Org.Apache.REEF.Client/YARN/YARNClientConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Client/YARN/YARNClientConfiguration.cs
@@ -17,13 +17,8 @@
* under the License.
*/
using Org.Apache.REEF.Client.API;
-using Org.Apache.REEF.Client.Local.Parameters;
-using Org.Apache.REEF.Common.Io;
using Org.Apache.REEF.Tang.Formats;
-using Org.Apache.REEF.Tang.Interface;
using Org.Apache.REEF.Tang.Util;
-using Org.Apache.REEF.Wake.Remote;
-using Org.Apache.REEF.Wake.Remote.Parameters;
namespace Org.Apache.REEF.Client.YARN
{
@@ -32,39 +27,8 @@ namespace Org.Apache.REEF.Client.YARN
/// </summary>
public sealed class YARNClientConfiguration : ConfigurationModuleBuilder
{
- /// <summary>
- /// Configuration provides whose Configuration will be merged into all Driver Configuration.
- /// </summary>
- public static readonly OptionalImpl<IConfigurationProvider> DriverConfigurationProvider = new OptionalImpl<IConfigurationProvider>();
-
- /// <summary>
- /// Start of the tcp port range for listening.
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeStartParameter = new OptionalParameter<int>();
-
- /// <summary>
- /// Number of port for the tcp port range for listening.
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeCountParameter = new OptionalParameter<int>();
-
- /// <summary>
- /// Max number of times we will deliver a port from the tcp port range.
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeTryCountParameter = new OptionalParameter<int>();
-
- /// <summary>
- /// Seed for the number number for determining which particular port to deliver from the range
- /// </summary>
- public static readonly OptionalParameter<int> TcpPortRangeSeedParameter = new OptionalParameter<int>();
-
-
public static ConfigurationModule ConfigurationModule = new YARNClientConfiguration()
.BindImplementation(GenericType<IREEFClient>.Class, GenericType<YARNClient>.Class)
- .BindSetEntry(GenericType<DriverConfigurationProviders>.Class, DriverConfigurationProvider)
- .BindNamedParameter(GenericType<TcpPortRangeStart>.Class, TcpPortRangeStartParameter)
- .BindNamedParameter(GenericType<TcpPortRangeCount>.Class, TcpPortRangeCountParameter)
- .BindNamedParameter(GenericType<TcpPortRangeTryCount>.Class, TcpPortRangeTryCountParameter)
- .BindNamedParameter(GenericType<TcpPortRangeSeed>.Class, TcpPortRangeSeedParameter)
.Build();
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/DefaultRemoteManager.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/DefaultRemoteManager.cs b/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/DefaultRemoteManager.cs
index de577d1..0290029 100644
--- a/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/DefaultRemoteManager.cs
+++ b/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/DefaultRemoteManager.cs
@@ -198,6 +198,10 @@ namespace Org.Apache.REEF.Wake.Remote.Impl
{
TransportClient<IRemoteEvent<T>> client =
new TransportClient<IRemoteEvent<T>>(remoteEndpoint, _codec, _observerContainer);
+ LOGGER.Log(Level.Info,
+ String.Format("NewClientConnection: Local {0} connected to Remote {1}",
+ client.Link.LocalEndpoint.ToString(),
+ client.Link.RemoteEndpoint.ToString()));
remoteObserver = new ProxyObserver(client);
_cachedClients[remoteEndpoint] = remoteObserver;
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/LocalClient.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/LocalClient.java b/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/LocalClient.java
index e8d4fdf..389e3bf 100644
--- a/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/LocalClient.java
+++ b/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/LocalClient.java
@@ -1,4 +1,4 @@
-/**
+/*
* 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
@@ -18,19 +18,25 @@
*/
package org.apache.reef.bridge.client;
+import org.apache.reef.client.parameters.DriverConfigurationProviders;
+import org.apache.reef.io.TcpPortConfigurationProvider;
import org.apache.reef.runtime.common.driver.api.AbstractDriverRuntimeConfiguration;
import org.apache.reef.runtime.common.files.REEFFileNames;
import org.apache.reef.runtime.local.client.DriverConfigurationProvider;
import org.apache.reef.runtime.local.client.LocalRuntimeConfiguration;
import org.apache.reef.runtime.local.client.PreparedDriverFolderLauncher;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.Tang;
+import org.apache.reef.tang.*;
+import org.apache.reef.tang.annotations.Parameter;
import org.apache.reef.tang.exceptions.InjectionException;
import org.apache.reef.tang.formats.AvroConfigurationSerializer;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeBegin;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeCount;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeTryCount;
import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
+import java.util.Set;
/**
* Submits a folder containing a Driver to the local runtime.
@@ -42,16 +48,19 @@ public class LocalClient {
private final PreparedDriverFolderLauncher launcher;
private final REEFFileNames fileNames;
private final DriverConfigurationProvider driverConfigurationProvider;
+ private final Set<ConfigurationProvider> configurationProviders;
@Inject
public LocalClient(final AvroConfigurationSerializer configurationSerializer,
final PreparedDriverFolderLauncher launcher,
final REEFFileNames fileNames,
- final DriverConfigurationProvider driverConfigurationProvider) {
+ final DriverConfigurationProvider driverConfigurationProvider,
+ final @Parameter(DriverConfigurationProviders.class) Set<ConfigurationProvider> configurationProviders) {
this.configurationSerializer = configurationSerializer;
this.launcher = launcher;
this.fileNames = fileNames;
this.driverConfigurationProvider = driverConfigurationProvider;
+ this.configurationProviders = configurationProviders;
}
public void submit(final File jobFolder, final String jobId) throws IOException {
@@ -64,8 +73,17 @@ public class LocalClient {
throw new IOException("The Driver folder " + driverFolder.getAbsolutePath() + " doesn't exist.");
}
- final Configuration driverConfiguration = driverConfigurationProvider
+ final Configuration driverConfiguration1 = driverConfigurationProvider
.getDriverConfiguration(jobFolder, CLIENT_REMOTE_ID, jobId, Constants.DRIVER_CONFIGURATION_WITH_HTTP_AND_NAMESERVER);
+ final ConfigurationBuilder configurationBuilder = Tang.Factory.getTang().newConfigurationBuilder();
+ for (final ConfigurationProvider configurationProvider : this.configurationProviders) {
+ configurationBuilder.addConfiguration(configurationProvider.getConfiguration());
+ }
+ final Configuration providedConfigurations = configurationBuilder.build();
+ final Configuration driverConfiguration = Configurations.merge(
+ driverConfiguration1,
+ providedConfigurations);
+
final File driverConfigurationFile = new File(driverFolder, fileNames.getDriverConfigurationPath());
configurationSerializer.toFile(driverConfiguration, driverConfigurationFile);
launcher.launch(driverFolder, jobId, CLIENT_REMOTE_ID);
@@ -77,15 +95,16 @@ public class LocalClient {
// We assume the given path to be the one of the driver. The job folder is one level up from there.
final File jobFolder = new File(args[0]).getParentFile();
- // The job identifier
+ final String runtimeRootFolder = jobFolder.getParentFile().getAbsolutePath();
final String jobId = args[1];
// The number of evaluators the local runtime can create
final int numberOfEvaluators = Integer.valueOf(args[2]);
+ final int tcpBeginPort = Integer.valueOf(args[3]);
+ final int tcpRangeCount = Integer.valueOf(args[4]);
+ final int tcpTryCount = Integer.valueOf(args[5]);
- final Configuration runtimeConfiguration = LocalRuntimeConfiguration.CONF
- .set(LocalRuntimeConfiguration.MAX_NUMBER_OF_EVALUATORS, numberOfEvaluators)
- .set(LocalRuntimeConfiguration.RUNTIME_ROOT_FOLDER, jobFolder.getParentFile().getAbsolutePath())
- .build();
+
+ final Configuration runtimeConfiguration = getRuntimeConfiguration(numberOfEvaluators, runtimeRootFolder, tcpBeginPort, tcpRangeCount, tcpTryCount);
final LocalClient client = Tang.Factory.getTang()
.newInjector(runtimeConfiguration)
@@ -93,4 +112,27 @@ public class LocalClient {
client.submit(jobFolder, jobId);
}
+
+ private static Configuration getRuntimeConfiguration(
+ int numberOfEvaluators,
+ String runtimeRootFolder,
+ int tcpBeginPort,
+ int tcpRangeCount,
+ int tcpTryCount) {
+ final Configuration runtimeConfiguration = getRuntimeConfiguration(numberOfEvaluators, runtimeRootFolder);
+ final Configuration userproviderConfiguration = Tang.Factory.getTang().newConfigurationBuilder()
+ .bindSetEntry(DriverConfigurationProviders.class, TcpPortConfigurationProvider.class)
+ .bindNamedParameter(TcpPortRangeBegin.class, Integer.toString(tcpBeginPort))
+ .bindNamedParameter(TcpPortRangeCount.class, Integer.toString(tcpRangeCount))
+ .bindNamedParameter(TcpPortRangeTryCount.class, Integer.toString(tcpTryCount))
+ .build();
+ return Configurations.merge(runtimeConfiguration, userproviderConfiguration);
+ }
+
+ private static Configuration getRuntimeConfiguration(int numberOfEvaluators, String runtimeRootFolder) {
+ return LocalRuntimeConfiguration.CONF
+ .set(LocalRuntimeConfiguration.MAX_NUMBER_OF_EVALUATORS, Integer.toString(numberOfEvaluators))
+ .set(LocalRuntimeConfiguration.RUNTIME_ROOT_FOLDER, runtimeRootFolder)
+ .build();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java b/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
index bd4f009..248375a 100644
--- a/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
+++ b/lang/java/reef-bridge-client/src/main/java/org/apache/reef/bridge/client/YarnJobSubmissionClient.java
@@ -1,4 +1,4 @@
-/**
+/*
* 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
@@ -6,9 +6,9 @@
* 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
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
+ *
+ * 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
@@ -21,6 +21,8 @@ package org.apache.reef.bridge.client;
import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
+import org.apache.reef.client.parameters.DriverConfigurationProviders;
+import org.apache.reef.io.TcpPortConfigurationProvider;
import org.apache.reef.runtime.common.driver.api.AbstractDriverRuntimeConfiguration;
import org.apache.reef.runtime.common.files.ClasspathProvider;
import org.apache.reef.runtime.common.files.REEFFileNames;
@@ -29,12 +31,13 @@ import org.apache.reef.runtime.yarn.client.YarnSubmissionHelper;
import org.apache.reef.runtime.yarn.client.uploader.JobFolder;
import org.apache.reef.runtime.yarn.client.uploader.JobUploader;
import org.apache.reef.runtime.yarn.driver.YarnDriverConfiguration;
-import org.apache.reef.tang.Configuration;
-import org.apache.reef.tang.Configurations;
-import org.apache.reef.tang.Tang;
+import org.apache.reef.tang.*;
import org.apache.reef.tang.exceptions.InjectionException;
import org.apache.reef.tang.formats.ConfigurationSerializer;
import org.apache.reef.util.JARFileMaker;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeBegin;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeCount;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeTryCount;
import javax.inject.Inject;
import java.io.File;
@@ -151,16 +154,32 @@ public final class YarnJobSubmissionClient {
}
}
+ private static Configuration getRuntimeConfiguration(int tcpBeginPort, int tcpRangeCount, int tcpTryCount) {
+ Configuration yarnClientConfig = YarnClientConfiguration.CONF
+ .build();
+
+ Configuration providerConfig = Tang.Factory.getTang().newConfigurationBuilder()
+ .bindSetEntry(DriverConfigurationProviders.class, TcpPortConfigurationProvider.class)
+ .bindNamedParameter(TcpPortRangeBegin.class, Integer.toString(tcpBeginPort))
+ .bindNamedParameter(TcpPortRangeCount.class, Integer.toString(tcpRangeCount))
+ .bindNamedParameter(TcpPortRangeTryCount.class, Integer.toString(tcpTryCount))
+ .build();
+
+ return Configurations.merge(yarnClientConfig, providerConfig);
+ }
+
public static void main(final String[] args) throws InjectionException, IOException, YarnException {
final File driverFolder = new File(args[0]);
final String jobId = args[1];
final int driverMemory = Integer.valueOf(args[2]);
-
+ final int tcpBeginPort = Integer.valueOf(args[3]);
+ final int tcpRangeCount = Integer.valueOf(args[4]);
+ final int tcpTryCount = Integer.valueOf(args[5]);
// Static for now
final int priority = 1;
final String queue = "default";
- final Configuration yarnConfiguration = YarnClientConfiguration.CONF.build();
+ final Configuration yarnConfiguration = getRuntimeConfiguration(tcpBeginPort, tcpRangeCount, tcpTryCount);
final YarnJobSubmissionClient client = Tang.Factory.getTang()
.newInjector(yarnConfiguration)
.getInstance(YarnJobSubmissionClient.class);
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-common/src/main/java/org/apache/reef/io/TcpPortConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-common/src/main/java/org/apache/reef/io/TcpPortConfigurationProvider.java b/lang/java/reef-common/src/main/java/org/apache/reef/io/TcpPortConfigurationProvider.java
new file mode 100644
index 0000000..19f311c
--- /dev/null
+++ b/lang/java/reef-common/src/main/java/org/apache/reef/io/TcpPortConfigurationProvider.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.apache.reef.io;
+
+import org.apache.reef.driver.parameters.EvaluatorConfigurationProviders;
+import org.apache.reef.tang.Configuration;
+import org.apache.reef.tang.ConfigurationProvider;
+import org.apache.reef.tang.Tang;
+import org.apache.reef.tang.annotations.Parameter;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeBegin;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeCount;
+import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeTryCount;
+
+import javax.inject.Inject;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Implements ConfigurationProvider for RangeTcpPortProvider
+ */
+public class TcpPortConfigurationProvider implements ConfigurationProvider {
+ private final int portRangeBegin;
+ private final int portRangeCount;
+ private final int portRangeTryCount;
+ private static final Logger LOG = Logger.getLogger(TcpPortConfigurationProvider.class.getName());
+
+ @Inject
+ TcpPortConfigurationProvider(final @Parameter(TcpPortRangeBegin.class) int portRangeBegin,
+ final @Parameter(TcpPortRangeCount.class) int portRangeCount,
+ final @Parameter(TcpPortRangeTryCount.class) int portRangeTryCount) {
+ this.portRangeBegin = portRangeBegin;
+ this.portRangeCount = portRangeCount;
+ this.portRangeTryCount = portRangeTryCount;
+ LOG.log(Level.INFO, "Instantiating " + this.toString());
+ }
+
+ /**
+ * returns a configuration for the class that implements TcpPortProvider so that class can be instantiated
+ * somewhere else
+ *
+ * @return Configuration.
+ */
+ @Override
+ public Configuration getConfiguration() {
+ return Tang.Factory.getTang().newConfigurationBuilder()
+ .bindNamedParameter(TcpPortRangeBegin.class, String.valueOf(portRangeBegin))
+ .bindNamedParameter(TcpPortRangeCount.class, String.valueOf(portRangeCount))
+ .bindNamedParameter(TcpPortRangeTryCount.class, String.valueOf(portRangeTryCount))
+ .bindSetEntry(EvaluatorConfigurationProviders.class, TcpPortConfigurationProvider.class)
+ .build();
+ }
+
+ @Override
+ public String toString() {
+ return "TcpPortConfigurationProvider{" +
+ "portRangeBegin=" + portRangeBegin +
+ ", portRangeCount=" + portRangeCount +
+ ", portRangeTryCount=" + portRangeTryCount +
+ '}';
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameServerImpl.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameServerImpl.java b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameServerImpl.java
index 6fdd0b5..c541c73 100644
--- a/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameServerImpl.java
+++ b/lang/java/reef-io/src/main/java/org/apache/reef/io/network/naming/NameServerImpl.java
@@ -30,6 +30,8 @@ import org.apache.reef.wake.remote.Codec;
import org.apache.reef.wake.remote.address.LocalAddressProvider;
import org.apache.reef.wake.remote.address.LocalAddressProviderFactory;
import org.apache.reef.wake.remote.impl.TransportEvent;
+import org.apache.reef.wake.remote.ports.RangeTcpPortProvider;
+import org.apache.reef.wake.remote.ports.TcpPortProvider;
import org.apache.reef.wake.remote.transport.Transport;
import org.apache.reef.wake.remote.transport.netty.NettyMessagingTransport;
import org.apache.reef.webserver.AvroReefServiceInfo;
@@ -98,7 +100,7 @@ public class NameServerImpl implements NameServer {
final int port,
final IdentifierFactory factory,
final ReefEventStateManager reefEventStateManager) {
- this(port, factory, reefEventStateManager, LocalAddressProviderFactory.getInstance());
+ this(port, factory, reefEventStateManager, LocalAddressProviderFactory.getInstance(), RangeTcpPortProvider.Default);
}
/**
@@ -113,7 +115,8 @@ public class NameServerImpl implements NameServer {
final @Parameter(NameServerParameters.NameServerPort.class) int port,
final @Parameter(NameServerParameters.NameServerIdentifierFactory.class) IdentifierFactory factory,
final ReefEventStateManager reefEventStateManager,
- final LocalAddressProvider localAddressProvider) {
+ final LocalAddressProvider localAddressProvider,
+ final TcpPortProvider tcpPortProvider) {
this.localAddressProvider = localAddressProvider;
@@ -122,7 +125,7 @@ public class NameServerImpl implements NameServer {
final EventHandler<NamingMessage> handler = createEventHandler(codec);
this.transport = new NettyMessagingTransport(localAddressProvider.getLocalAddress(), port, null,
- new SyncStage<>(new NamingServerHandler(handler, codec)), 3, 10000);
+ new SyncStage<>(new NamingServerHandler(handler, codec)), 3, 10000, tcpPortProvider);
this.port = transport.getListeningPort();
this.idToAddrMap = Collections.synchronizedMap(new HashMap<Identifier, InetSocketAddress>());
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-runtime-local/src/main/java/org/apache/reef/runtime/local/client/LocalRuntimeConfiguration.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-runtime-local/src/main/java/org/apache/reef/runtime/local/client/LocalRuntimeConfiguration.java b/lang/java/reef-runtime-local/src/main/java/org/apache/reef/runtime/local/client/LocalRuntimeConfiguration.java
index accb6b0..9a882cf 100644
--- a/lang/java/reef-runtime-local/src/main/java/org/apache/reef/runtime/local/client/LocalRuntimeConfiguration.java
+++ b/lang/java/reef-runtime-local/src/main/java/org/apache/reef/runtime/local/client/LocalRuntimeConfiguration.java
@@ -19,7 +19,6 @@
package org.apache.reef.runtime.local.client;
import org.apache.reef.client.parameters.DriverConfigurationProviders;
-import org.apache.reef.tang.ConfigurationProvider;
import org.apache.reef.runtime.common.client.CommonRuntimeConfiguration;
import org.apache.reef.runtime.common.client.api.JobSubmissionHandler;
import org.apache.reef.runtime.common.files.RuntimeClasspathProvider;
@@ -27,12 +26,12 @@ import org.apache.reef.runtime.common.parameters.JVMHeapSlack;
import org.apache.reef.runtime.local.LocalClasspathProvider;
import org.apache.reef.runtime.local.client.parameters.MaxNumberOfEvaluators;
import org.apache.reef.runtime.local.client.parameters.RootFolder;
+import org.apache.reef.tang.ConfigurationProvider;
import org.apache.reef.tang.formats.ConfigurationModule;
import org.apache.reef.tang.formats.ConfigurationModuleBuilder;
import org.apache.reef.tang.formats.OptionalImpl;
import org.apache.reef.tang.formats.OptionalParameter;
import org.apache.reef.wake.remote.address.LocalAddressProvider;
-import org.apache.reef.wake.remote.ports.TcpPortProvider;
import java.util.concurrent.ExecutorService;
@@ -67,19 +66,8 @@ public class LocalRuntimeConfiguration extends ConfigurationModuleBuilder {
*/
public static final OptionalImpl<ConfigurationProvider> DRIVER_CONFIGURATION_PROVIDERS = new OptionalImpl<>();
- /**
- * The class used to resolve the local address for Wake and HTTP to bind to.
- * Note that you will likely want to bind the same class also to DRIVER_CONFIGURATION_PROVIDERS to make sure that
- * the Driver (and the Evaluators) also use it.
- */
- public static final OptionalImpl<LocalAddressProvider> LOCAL_ADDRESS_PROVIDER = new OptionalImpl<>();
- /**
- * The class used to restrict tcp port ranges for listening
- * Note that you will likely want to bind the same class also to DRIVER_CONFIGURATION_PROVIDERS to make sure that
- * the Driver (and the Evaluators) also use it.
- */
- public static final OptionalImpl<TcpPortProvider> TCP_PORT_PROVIDER = new OptionalImpl<>();
+
/**
* The ConfigurationModule for the local resourcemanager.
@@ -95,9 +83,6 @@ public class LocalRuntimeConfiguration extends ConfigurationModuleBuilder {
.bindNamedParameter(RootFolder.class, RUNTIME_ROOT_FOLDER)
.bindNamedParameter(JVMHeapSlack.class, JVM_HEAP_SLACK)
.bindSetEntry(DriverConfigurationProviders.class, DRIVER_CONFIGURATION_PROVIDERS)
- // Bind LocalAddressProvider
- .bindImplementation(LocalAddressProvider.class, LOCAL_ADDRESS_PROVIDER)
- .bindImplementation(TcpPortProvider.class, TCP_PORT_PROVIDER)
.build();
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/client/YarnClientConfiguration.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/client/YarnClientConfiguration.java b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/client/YarnClientConfiguration.java
index 115484b..15f7435 100644
--- a/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/client/YarnClientConfiguration.java
+++ b/lang/java/reef-runtime-yarn/src/main/java/org/apache/reef/runtime/yarn/client/YarnClientConfiguration.java
@@ -21,7 +21,6 @@ package org.apache.reef.runtime.yarn.client;
import org.apache.reef.annotations.audience.ClientSide;
import org.apache.reef.annotations.audience.Public;
import org.apache.reef.client.parameters.DriverConfigurationProviders;
-import org.apache.reef.tang.ConfigurationProvider;
import org.apache.reef.runtime.common.client.CommonRuntimeConfiguration;
import org.apache.reef.runtime.common.client.api.JobSubmissionHandler;
import org.apache.reef.runtime.common.files.RuntimeClasspathProvider;
@@ -30,13 +29,13 @@ import org.apache.reef.runtime.yarn.YarnClasspathProvider;
import org.apache.reef.runtime.yarn.client.parameters.JobPriority;
import org.apache.reef.runtime.yarn.client.parameters.JobQueue;
import org.apache.reef.runtime.yarn.util.YarnConfigurationConstructor;
+import org.apache.reef.tang.ConfigurationProvider;
import org.apache.reef.tang.formats.ConfigurationModule;
import org.apache.reef.tang.formats.ConfigurationModuleBuilder;
import org.apache.reef.tang.formats.OptionalImpl;
import org.apache.reef.tang.formats.OptionalParameter;
import org.apache.reef.util.logging.LoggingSetup;
import org.apache.reef.wake.remote.address.LocalAddressProvider;
-import org.apache.reef.wake.remote.ports.TcpPortProvider;
/**
* A ConfigurationModule for the YARN resourcemanager.
@@ -58,20 +57,6 @@ public class YarnClientConfiguration extends ConfigurationModuleBuilder {
*/
public static final OptionalImpl<ConfigurationProvider> DRIVER_CONFIGURATION_PROVIDERS = new OptionalImpl<>();
- /**
- * The class used to restrict tcp port ranges for listening
- * Note that you will likely want to bind the same class also to DRIVER_CONFIGURATION_PROVIDERS to make sure that
- * the Driver (and the Evaluators) also use it.
- */
- public static final OptionalImpl<TcpPortProvider> TCP_PORT_PROVIDER = new OptionalImpl<>();
-
- /**
- * The class used to resolve the local address for Wake and HTTP to bind to.
- * Note that you will likely want to bind the same class also to DRIVER_CONFIGURATION_PROVIDERS to make sure that
- * the Driver (and the Evaluators) also use it.
- */
- public static final OptionalImpl<LocalAddressProvider> LOCAL_ADDRESS_PROVIDER = new OptionalImpl<>();
-
public static final ConfigurationModule CONF = new YarnClientConfiguration()
.merge(CommonRuntimeConfiguration.CONF)
// Bind YARN
@@ -84,9 +69,6 @@ public class YarnClientConfiguration extends ConfigurationModuleBuilder {
// Bind external constructors. Taken from YarnExternalConstructors.registerClientConstructors
.bindConstructor(org.apache.hadoop.yarn.conf.YarnConfiguration.class, YarnConfigurationConstructor.class)
.bindSetEntry(DriverConfigurationProviders.class, DRIVER_CONFIGURATION_PROVIDERS)
- // Bind LocalAddressProvider
- .bindImplementation(LocalAddressProvider.class, LOCAL_ADDRESS_PROVIDER)
- .bindImplementation(TcpPortProvider.class, TCP_PORT_PROVIDER)
.build();
}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/RangeTcpPortProvider.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/RangeTcpPortProvider.java b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/RangeTcpPortProvider.java
index 64b8de4..246270b 100644
--- a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/RangeTcpPortProvider.java
+++ b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/RangeTcpPortProvider.java
@@ -29,12 +29,13 @@ import org.apache.reef.wake.remote.ports.parameters.TcpPortRangeTryCount;
import javax.inject.Inject;
import java.util.Iterator;
+import java.util.logging.Level;
import java.util.logging.Logger;
/**
* A TcpPortProvider which gives out random ports in a range
*/
-public final class RangeTcpPortProvider implements TcpPortProvider, ConfigurationProvider {
+public final class RangeTcpPortProvider implements TcpPortProvider {
private final int portRangeBegin;
private final int portRangeCount;
private final int portRangeTryCount;
@@ -47,6 +48,7 @@ public final class RangeTcpPortProvider implements TcpPortProvider, Configuratio
this.portRangeBegin = portRangeBegin;
this.portRangeCount = portRangeCount;
this.portRangeTryCount = portRangeTryCount;
+ LOG.log(Level.FINE, "Instantiating " + this);
}
/**
@@ -68,17 +70,6 @@ public final class RangeTcpPortProvider implements TcpPortProvider, Configuratio
Integer.parseInt(TcpPortRangeCount.default_value),
Integer.parseInt(TcpPortRangeTryCount.default_value));
-
- @Override
- public Configuration getConfiguration() {
- return Tang.Factory.getTang().newConfigurationBuilder()
- .bindNamedParameter(TcpPortRangeBegin.class, String.valueOf(portRangeBegin))
- .bindNamedParameter(TcpPortRangeCount.class, String.valueOf(portRangeCount))
- .bindNamedParameter(TcpPortRangeTryCount.class, String.valueOf(portRangeTryCount))
- .bindImplementation(TcpPortProvider.class, RangeTcpPortProvider.class)
- .build();
- }
-
@Override
public String toString() {
return "RangeTcpPortProvider{" +
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/b9686cd7/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/TcpPortProvider.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/TcpPortProvider.java b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/TcpPortProvider.java
index 566b62b..1b4803c 100644
--- a/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/TcpPortProvider.java
+++ b/lang/java/reef-wake/wake/src/main/java/org/apache/reef/wake/remote/ports/TcpPortProvider.java
@@ -1,4 +1,4 @@
-/**
+/*
* 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
@@ -35,12 +35,4 @@ public interface TcpPortProvider extends Iterable<Integer> {
*/
@Override
Iterator<Integer> iterator();
-
- /**
- * returns a configuration for the class that implements TcpPortProvider so that class can be instantiated
- * somewhere else
- *
- * @return Configuration.
- */
- Configuration getConfiguration();
}