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>

Reply via email to