[Zope-dev] ZODB history problem with Zope 2.12.7
Chris Withers
chris at simplistix.co.uk
Tue Sep 28 08:42:00 EDT 2010
On 28/09/2010 12:55, Tres Seaver wrote:
> On 09/28/2010 03:36 AM, Chris Withers wrote:
>> On 28/09/2010 00:12, Marius Gedminas wrote:
>>> --- ./OFS/History.py.orig 2010-09-28 02:11:56.535745440 +0300
>>> +++ ./OFS/History.py 2010-09-28 02:12:00.043764683 +0300
>>> @@ -151,6 +151,9 @@
>>> base = aq_base(self)
>>> base._p_activate() # make sure we're not a ghost
>>> base.__setstate__(state) # change the state
>>> + for attr in dir(base):
>>> + if attr.startswith('_v_'):
>>> + delattr(base, attr)
>>> base._p_changed = True # marke object as dirty
>>> self.manage_afterHistoryCopy()
>>
>> Thanks, I guess I'll monkey patch for now, here's the bug:
>>
>> https://bugs.launchpad.net/zope2/+bug/649605
>>
>> However, I'm curious, so the above will fix the object in the current
>> thread, but what about objects in other threads?
>>
>> (or do _v_ attributes get killed off at the start of each transaction?)
>
> Only when objects are ghostified (due to an invalidation from another
> thread or process) or evicted from the cache. I'm not quite sure how
> the case you are triggering occurs, but if that code saves the new-old
> version of the template to the ZODB, then any instances in other
> threads' connection caches should be invalidated.
Feel free to repeat the steps I originally posted and are in the bug
description ;-)
Looks like the History.py code isn't doing something it should, but I
don't know when or what changed to make this so. I'll CC zodb-dev in
case Jim knows of any changes in ZODB (I'm using 3.9.6) that might be
relevant...
cheers,
Chris
--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope-Dev
mailing list