Tim Peters wrote at 2005-8-26 14:59 -0400: > ... >I would like to make it an error (raise a ValueError exception) to attempt >to set obj._p_changed to a true value when obj is a ghost. Does anyone >object?
I came along an argument against this change: Assume, you have a persistent object "o" with a mutable non persistent attribute "a". One of the idioms for changing "a" looks like: ... modify "o.a" ... o._p_changed = True However, as Shane pointed out, this may cause ZODB inconsistencies: When "... modify "o.a" ..." raises an exception, then "a" may or may not already have been modified. Such changes may be committed in a future transaction (not the current one, as this is aborted). Therefore, he proposed to change the idiom to: o._p_changed = True ... modify "o.a" ... Now, the persistence subsystem (hopefully) already knows the "o" is changed and invalidates it on abort. The inconsistency cannot occur. Of course, raising an exception when "o" happens to be a "ghost", would not be appropriate for this idiom -- neither is the current behaviour to just ignore the assignment to "_p_changed". -- Dieter _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev