zaheer - in flumotion/trunk: . flumotion/component flumotion/manager
flumotion-commit at lists.fluendo.com
flumotion-commit at lists.fluendo.com
Wed Feb 14 18:32:04 CET 2007
Author: zaheer
Date: Wed Feb 14 18:32:02 2007
New Revision: 4488
Modified:
flumotion/trunk/ChangeLog
flumotion/trunk/flumotion/component/feedcomponent010.py
flumotion/trunk/flumotion/manager/component.py
Log:
2007-02-14 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* flumotion/component/feedcomponent010.py:
If we get a gstreamer error, errback any stateChangeDefers for
READY->PAUSED. This fixes issue where we do not errback on
providing master clock.
* flumotion/manager/component.py:
Handle errback on providing master clock, and release port on
error.
Fixes #568.
Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog (original)
+++ flumotion/trunk/ChangeLog Wed Feb 14 18:32:02 2007
@@ -1,3 +1,14 @@
+2007-02-14 Zaheer Abbas Merali <zaheerabbas at merali dot org>
+
+ * flumotion/component/feedcomponent010.py:
+ If we get a gstreamer error, errback any stateChangeDefers for
+ READY->PAUSED. This fixes issue where we do not errback on
+ providing master clock.
+ * flumotion/manager/component.py:
+ Handle errback on providing master clock, and release port on
+ error.
+ Fixes #568.
+
2007-02-14 Andy Wingo <wingo at pobox.com>
* flumotion/common/netutils.py (RoutingTable.addSubnet): Sanity
Modified: flumotion/trunk/flumotion/component/feedcomponent010.py
==============================================================================
--- flumotion/trunk/flumotion/component/feedcomponent010.py (original)
+++ flumotion/trunk/flumotion/component/feedcomponent010.py Wed Feb 14 18:32:02 2007
@@ -401,6 +401,17 @@
gerror.message, gerror.domain, gerror.code, debug),
id=id, priority=40)
self.state.append('messages', m)
+ # if we have a state change defer to paused that has not yet
+ # fired, we should errback it
+ change = gst.STATE_CHANGE_READY_TO_PAUSED
+ if change in self._stateChangeDeferreds:
+ self.log("We have an error, going to errback pending state "
+ "change defers")
+ dlist = self._stateChangeDeferreds[change]
+ for d in dlist:
+ d.errback(errors.ComponentStartHandledError(gerror.message))
+ del self._stateChangeDeferreds[change]
+
elif t == gst.MESSAGE_EOS:
name = src.get_name()
if name in ['eater:' + n for n in self.eater_names]:
Modified: flumotion/trunk/flumotion/manager/component.py
==============================================================================
--- flumotion/trunk/flumotion/manager/component.py (original)
+++ flumotion/trunk/flumotion/manager/component.py Wed Feb 14 18:32:02 2007
@@ -1044,6 +1044,19 @@
workerName = componentAvatar.getWorkerName()
port = self.vishnu.reservePortsOnWorker(workerName, 1)[0]
+ def failedToProvideMasterClock(failure):
+ # check if we actually did provide master clock and failed
+ # to give to a waiting component or we actually failed to
+ # provide a master clock
+ if avatarId in self._masterClockInfo:
+ self.warning('Failed to provide master clock info to a '
+ 'component waiting for it')
+ else:
+ self.warning('Failed to provide master clock itself')
+ self.debug('Going to release port')
+ self.vishnu.releasePortsOnWorker(workerName, [port])
+ self.warning(failure.getErrorMessage())
+
if avatarId in self._masterClockInfo:
self.warning('component %s already has master clock info: %r'
% (avatarId, self._masterClockInfo[avatarId]))
@@ -1051,6 +1064,7 @@
d = componentAvatar.mindCallRemote('provideMasterClock', port)
d.addCallback(setMasterClockInfo)
d.addCallback(wakeClockMasterWaiters)
+ d.addErrback(failedToProvideMasterClock)
return d
def removeMasterClock(self, componentAvatar):
More information about the flumotion-commit
mailing list