Deep-copy not always possible.

In working with cinder it appears that at last
cinder is using objects which can not be deep
copied (sqlalchemy objects) and which actually
cause the deepcopy routine to fail. To get
around this avoid the deepcopy until proven
its really needed.

Change-Id: Ia7b7c49e82c2151351cc0f78ecb1531c35540652
This commit is contained in:
Joshua Harlow
2013-08-02 00:05:08 -07:00
parent 112d8664f4
commit d889c0b607

View File

@@ -17,7 +17,6 @@
# under the License.
import collections
import copy
import logging
from taskflow.openstack.common import excutils
@@ -193,18 +192,9 @@ class Flow(base.Flow):
# notifying others that the task has finished to
# avoid the case where a listener might throw an
# exception.
#
# Note(harlowja): Keep the original result in the
# accumulator only and give a duplicated copy to
# avoid the original result being altered by other
# tasks.
#
# This is due to python being by reference (which means
# some task could alter this result intentionally or not
# intentionally).
rb.result = result
runner.result = result
self.results[runner.uuid] = copy.deepcopy(result)
self.results[runner.uuid] = result
self.task_notifier.notify(states.SUCCESS, details={
'context': context,
'flow': self,