msmith - in flumotion/trunk: . flumotion/manager

flumotion-commit at lists.fluendo.com flumotion-commit at lists.fluendo.com
Thu May 24 17:51:27 CEST 2007


Author: msmith
Date: Thu May 24 17:51:24 2007
New Revision: 5029

Modified:
   flumotion/trunk/ChangeLog
   flumotion/trunk/flumotion/manager/manager.py
Log:
        * flumotion/manager/manager.py:
          When a component not known to the manager logs in, make sure we call
          all the appropriate functions to rebuild the entire depgraph
          correctly, not just fragments of it.
          Fixes #574.



Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog	(original)
+++ flumotion/trunk/ChangeLog	Thu May 24 17:51:24 2007
@@ -1,5 +1,13 @@
 2007-05-24  Michael Smith <msmith at fluendo.com>
 
+	* flumotion/manager/manager.py:
+	  When a component not known to the manager logs in, make sure we call
+	  all the appropriate functions to rebuild the entire depgraph
+	  correctly, not just fragments of it.
+	  Fixes #574.
+
+2007-05-24  Michael Smith <msmith at fluendo.com>
+
 	* flumotion/test/test_common_messages.py:
 	  Actually port a test to twisted 2 that was never ported.
 	* flumotion/twisted/integration.py:

Modified: flumotion/trunk/flumotion/manager/manager.py
==============================================================================
--- flumotion/trunk/flumotion/manager/manager.py	(original)
+++ flumotion/trunk/flumotion/manager/manager.py	Thu May 24 17:51:24 2007
@@ -391,6 +391,7 @@
         componentAvatarId = common.componentId(
             state.get('parent').get('name'), state.get('name'))
 
+        self.debug("Using config: %r for component with avatarId %r", conf, componentAvatarId)
         if componentAvatarId == conf['clock-master']:
             self._depgraph.addClockMaster(state)
 
@@ -920,12 +921,18 @@
             verifyExistingComponentState(jobState, m.state)
         else:
             makeNewComponentState(conf)
+            m = self.getComponentMapper(avatar.avatarId)
+            self._updateFlowDependencies(m.state)
+            try:
+                self._depgraph.mapEatersToFeeders()
+            except errors.ComponentConfigError, e:
+                # This can happen - the feeder that some eater refers to might
+                # not have logged back in yet. Once it does, we'll call this
+                # again, and the depgraph will get rebuilt properly.
+                self.debug("Couldn't map eaters to feeders for reconnecting "
+                    "component")
 
         m = self.getComponentMapper(avatar.avatarId)
-
-        # make sure the component is in the depgraph
-        self._depgraph.addComponent(m.state)
-
         m.avatar = avatar
         self._componentMappers[m.avatar] = m
         avatar.componentState = m.state


More information about the flumotion-commit mailing list