Repository: reef Updated Branches: refs/heads/master 915d7d33b -> b117b0184
[REEF-1320] Make default group creation passive JIRA: [REEF-1320](https://issues.apache.org/jira/browse/REEF-1320) Pull Request: This closes #930 Project: http://git-wip-us.apache.org/repos/asf/reef/repo Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/b117b018 Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/b117b018 Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/b117b018 Branch: refs/heads/master Commit: b117b0184e57f221aa4ed9a02d1ec11c95f78f57 Parents: 915d7d3 Author: Julia Wang <[email protected]> Authored: Wed Apr 6 18:49:55 2016 -0700 Committer: Markus Weimer <[email protected]> Committed: Tue Apr 12 14:04:22 2016 -0700 ---------------------------------------------------------------------- .../Group/Driver/Impl/GroupCommDriver.cs | 38 +++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/reef/blob/b117b018/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs b/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs index 3f7a47a..1f0752d 100644 --- a/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs +++ b/lang/cs/Org.Apache.REEF.Network/Group/Driver/Impl/GroupCommDriver.cs @@ -53,28 +53,30 @@ namespace Org.Apache.REEF.Network.Group.Driver.Impl private readonly int _nameServerPort; private int _contextIds; private readonly int _fanOut; - private readonly string _groupName; + private readonly string _defaultGroupName; + private readonly int _defaultGroupNumberOfTasks; private readonly Dictionary<string, ICommunicationGroupDriver> _commGroups; private readonly AvroConfigurationSerializer _configSerializer; + private readonly object _groupsLock = new object(); /// <summary> /// Create a new GroupCommunicationDriver object. /// </summary> - /// <param name="driverId">Identifer for the REEF driver</param> - /// <param name="masterTaskId">Identifer for Group Communication master task</param> + /// <param name="driverId">Identifier for the REEF driver</param> + /// <param name="masterTaskId">Identifier for Group Communication master task</param> /// <param name="fanOut">fanOut for tree topology</param> - /// <param name="groupName">default communication group name</param> - /// <param name="numberOfTasks">Number of tasks in the default group</param> + /// <param name="defaultGroupName">default communication group name</param> + /// <param name="defaultNumberOfTasks">Number of tasks in the default group</param> /// <param name="configSerializer">Used to serialize task configuration</param> - /// <param name="nameServer">Used to map names to ip adresses</param> + /// <param name="nameServer">Used to map names to ip addresses</param> [Inject] private GroupCommDriver( [Parameter(typeof(GroupCommConfigurationOptions.DriverId))] string driverId, [Parameter(typeof(GroupCommConfigurationOptions.MasterTaskId))] string masterTaskId, [Parameter(typeof(GroupCommConfigurationOptions.FanOut))] int fanOut, - [Parameter(typeof(GroupCommConfigurationOptions.GroupName))] string groupName, - [Parameter(typeof(GroupCommConfigurationOptions.NumberOfTasks))] int numberOfTasks, + [Parameter(typeof(GroupCommConfigurationOptions.GroupName))] string defaultGroupName, + [Parameter(typeof(GroupCommConfigurationOptions.NumberOfTasks))] int defaultNumberOfTasks, AvroConfigurationSerializer configSerializer, INameServer nameServer) { @@ -82,7 +84,8 @@ namespace Org.Apache.REEF.Network.Group.Driver.Impl _contextIds = -1; _fanOut = fanOut; MasterTaskId = masterTaskId; - _groupName = groupName; + _defaultGroupName = defaultGroupName; + _defaultGroupNumberOfTasks = defaultNumberOfTasks; _configSerializer = configSerializer; _commGroups = new Dictionary<string, ICommunicationGroupDriver>(); @@ -90,8 +93,6 @@ namespace Org.Apache.REEF.Network.Group.Driver.Impl IPEndPoint localEndpoint = nameServer.LocalEndpoint; _nameServerAddr = localEndpoint.Address.ToString(); _nameServerPort = localEndpoint.Port; - - NewCommunicationGroup(groupName, numberOfTasks); } /// <summary> @@ -101,7 +102,20 @@ namespace Org.Apache.REEF.Network.Group.Driver.Impl public ICommunicationGroupDriver DefaultGroup { - get { return _commGroups[_groupName]; } + get + { + lock (_groupsLock) + { + ICommunicationGroupDriver defaultGroup; + _commGroups.TryGetValue(_defaultGroupName, out defaultGroup); + + if (defaultGroup == null) + { + NewCommunicationGroup(_defaultGroupName, _defaultGroupNumberOfTasks); + } + } + return _commGroups[_defaultGroupName]; + } } /// <summary>
