[ZODB-Dev] ZODB _v_ attributes are tricky
    Paul Winkler 
    pw_lists at slinkp.com
       
    Fri Apr  2 12:05:57 EST 2004
    
    
  
On Fri, Apr 02, 2004 at 11:48:42AM -0500, Shane Hathaway wrote:
> Tim Peters wrote:
> >[Toby Dickenson]
> >
> >>The garbage collector can also be triggered explicitly by application
> >>code, and future improvements to the garbage collector might unload
> >>objects at other times too. In short, you should assume that _v_
> >>variables might disappear at any time.
> 
> ... or never, which equally confuses people.
> 
> >Part of the problem I perceive (and correct me if I'm wrong) is that the
> >docs are so lacking now that very few people are able to distinguish
> >accidental behavior from "officially supported" behavior.  I know for a 
> >fact
> >that Jeremy & I run into that repeatedly when trying to fix, or improve, or
> >even just clean up, internals.  We have large, interrelated, APIs, and
> >endcase behavior is often plain mysterious.
> 
> IMHO, _v_ attributes ought to be internal to ZODB.  Instead, ZODB ought 
> to provide two kinds of documented descriptors: Volatile and 
> TransactionalVolatile.  Volatile attributes revert to the default state 
> at any time;
or never, as you mention above?
> TransactionalVolatile attributes reliably revert to the 
> default state upon commit or rollback (including savepoint commit or 
> rollback).
this would be guaranteed? no maybes?
I'm attracted to this idea, Shane, on the surface it sounds easier
to work with. I haven't made heavy use of _v_ attributes precisely
because I have no good understanding of when they go away.
What might usage of your descriptors look like?
Similar to properties?  e.g.:
class Foo(Persistent):
    def _expensiveMethod(self):
        ...
        return data 
    _auto_caching_attribute = TransactionalVolatile(_expensiveMethod)
That looks pretty nice to me, but how would I trigger invalidation?
-- 
Paul Winkler
http://www.slinkp.com
Look! Up in the sky! It's APOCRYPHAL MONITOR DOCTOR!
(random hero from isometric.spaceninja.com)
    
    
More information about the ZODB-Dev
mailing list