Repository: incubator-reef Updated Branches: refs/heads/master 492da34a0 -> 578a043e6
[REEF-202] Fix NameClient injection issue in Group Communication This PR is to fix NameClient injection issue in Group Communication * Make NameClient injectable in NetworkService * Set configuration in MpiDriver * Update test cases JIRA: [REEF-202](https://issues.apache.org/jira/browse/REEF-202) Pull Request: This closes #108 Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/578a043e Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/578a043e Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/578a043e Branch: refs/heads/master Commit: 578a043e67ac78bd43533e94d77770a4863ed60c Parents: 492da34 Author: Julia Wang <[email protected]> Authored: Wed Mar 11 16:15:07 2015 -0700 Committer: Markus Weimer <[email protected]> Committed: Thu Mar 19 17:52:01 2015 -0700 ---------------------------------------------------------------------- .../Group/Driver/Impl/MpiDriver.cs | 2 ++ .../Group/Task/Impl/OperatorTopology.cs | 2 +- .../NetworkService/NetworkService.cs | 9 +++++---- .../Network/GroupCommunicationTests.cs | 3 +-- .../Network/NetworkServiceTests.cs | 16 ++++++++++++++-- 5 files changed, 23 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/578a043e/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/MpiDriver.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/MpiDriver.cs b/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/MpiDriver.cs index 291b7d6..77944a7 100644 --- a/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/MpiDriver.cs +++ b/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/MpiDriver.cs @@ -201,6 +201,8 @@ namespace Org.Apache.REEF.Network.Group.Driver.Impl .BindNamedParameter<NamingConfigurationOptions.NameServerPort, int>( GenericType<NamingConfigurationOptions.NameServerPort>.Class, _nameServerPort.ToString(CultureInfo.InvariantCulture)) + .BindImplementation(GenericType<INameClient>.Class, + GenericType<NameClient>.Class) .Build(); } http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/578a043e/lang/cs/Org.Apache.REEF.Network/Group/Task/Impl/OperatorTopology.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Network/Group/Task/Impl/OperatorTopology.cs b/lang/cs/Org.Apache.REEF.Network/Group/Task/Impl/OperatorTopology.cs index 088e2e7..07d8376 100644 --- a/lang/cs/Org.Apache.REEF.Network/Group/Task/Impl/OperatorTopology.cs +++ b/lang/cs/Org.Apache.REEF.Network/Group/Task/Impl/OperatorTopology.cs @@ -64,7 +64,7 @@ namespace Org.Apache.REEF.Network.Group.Task.Impl private readonly INameClient _nameClient; private readonly Sender _sender; private readonly BlockingCollection<NodeStruct> _nodesWithData; - + /// <summary> /// Creates a new OperatorTopology object. /// </summary> http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/578a043e/lang/cs/Org.Apache.REEF.Network/NetworkService/NetworkService.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Network/NetworkService/NetworkService.cs b/lang/cs/Org.Apache.REEF.Network/NetworkService/NetworkService.cs index 3f4ded6..6d4c0a4 100644 --- a/lang/cs/Org.Apache.REEF.Network/NetworkService/NetworkService.cs +++ b/lang/cs/Org.Apache.REEF.Network/NetworkService/NetworkService.cs @@ -60,11 +60,10 @@ namespace Org.Apache.REEF.Network.NetworkService [Inject] public NetworkService( [Parameter(typeof(NetworkServiceOptions.NetworkServicePort))] int nsPort, - [Parameter(typeof(NamingConfigurationOptions.NameServerAddress))] string nameServerAddr, - [Parameter(typeof(NamingConfigurationOptions.NameServerPort))] int nameServerPort, IObserver<NsMessage<T>> messageHandler, IIdentifierFactory idFactory, - ICodec<T> codec) + ICodec<T> codec, + INameClient nameClient) { _codec = new NsMessageCodec<T>(codec, idFactory); @@ -72,7 +71,7 @@ namespace Org.Apache.REEF.Network.NetworkService _remoteManager = new DefaultRemoteManager<NsMessage<T>>(localAddress, nsPort, _codec); _messageHandler = messageHandler; - NamingClient = new NameClient(nameServerAddr, nameServerPort); + NamingClient = nameClient; _connectionMap = new Dictionary<IIdentifier, IConnection<T>>(); LOGGER.Log(Level.Info, "Started network service"); @@ -123,6 +122,8 @@ namespace Org.Apache.REEF.Network.NetworkService // Create and register incoming message handler var anyEndpoint = new IPEndPoint(IPAddress.Any, 0); _messageHandlerDisposable = _remoteManager.RegisterObserver(anyEndpoint, _messageHandler); + + LOGGER.Log(Level.Info, "End of Registering id {0} with network service.", id); } /// <summary> http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/578a043e/lang/cs/Org.Apache.REEF.Tests/Network/GroupCommunicationTests.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tests/Network/GroupCommunicationTests.cs b/lang/cs/Org.Apache.REEF.Tests/Network/GroupCommunicationTests.cs index 8768297..2dc9445 100644 --- a/lang/cs/Org.Apache.REEF.Tests/Network/GroupCommunicationTests.cs +++ b/lang/cs/Org.Apache.REEF.Tests/Network/GroupCommunicationTests.cs @@ -696,8 +696,7 @@ namespace Org.Apache.REEF.Tests.Network IPEndPoint nameServerEndpoint, IObserver<NsMessage<GroupCommunicationMessage>> handler) { return new NetworkService<GroupCommunicationMessage>( - 0, nameServerEndpoint.Address.ToString(), nameServerEndpoint.Port, - handler, new StringIdentifierFactory(), new GroupCommunicationMessageCodec()); + 0, handler, new StringIdentifierFactory(), new GroupCommunicationMessageCodec(), new NameClient(nameServerEndpoint.Address.ToString(), nameServerEndpoint.Port)); } private GroupCommunicationMessage CreateGcm(string message, string from, string to) http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/578a043e/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs b/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs index 2427a05..75f07c3 100644 --- a/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs +++ b/lang/cs/Org.Apache.REEF.Tests/Network/NetworkServiceTests.cs @@ -139,6 +139,7 @@ namespace Org.Apache.REEF.Tests.Network .BindNamedParameter<NamingConfigurationOptions.NameServerAddress, string>( GenericType<NamingConfigurationOptions.NameServerAddress>.Class, nameServiceAddr) + .BindImplementation(GenericType<INameClient>.Class, GenericType<NameClient>.Class) .BindImplementation(GenericType<ICodec<string>>.Class, GenericType<StringCodec>.Class) .BindImplementation(GenericType<IObserver<NsMessage<string>>>.Class, GenericType<NetworkMessageHandler>.Class) .Build(); @@ -146,8 +147,19 @@ namespace Org.Apache.REEF.Tests.Network return TangFactory.GetTang().NewInjector(networkServiceConf).GetInstance<NetworkService<string>>(); } - return new NetworkService<string>(networkServicePort, nameServiceAddr, nameServicePort, - handler, new StringIdentifierFactory(), new StringCodec()); + var nameserverConf = TangFactory.GetTang().NewConfigurationBuilder() + .BindNamedParameter<NamingConfigurationOptions.NameServerPort, int>( + GenericType<NamingConfigurationOptions.NameServerPort>.Class, + nameServicePort.ToString(CultureInfo.CurrentCulture)) + .BindNamedParameter<NamingConfigurationOptions.NameServerAddress, string>( + GenericType<NamingConfigurationOptions.NameServerAddress>.Class, + nameServiceAddr) + .BindImplementation(GenericType<INameClient>.Class, GenericType<NameClient>.Class) + .Build(); + + var nameClient = TangFactory.GetTang().NewInjector(nameserverConf).GetInstance<NameClient>(); + return new NetworkService<string>(networkServicePort, + handler, new StringIdentifierFactory(), new StringCodec(), nameClient); } private class MessageHandler : IObserver<NsMessage<string>>
