On Mon, 12 Apr 2004 10:57:43 -0500 <zope@netchan.cotse.net> wrote:
Casey,
Thanks for the clarification.
- Is there an equivalent of sys.getrefcount for ZODB persistent objects?
This is still a question. Is there any way, to determine how many times a zodb persistent object is referenced? sys.getrefcount seems to tell me only those references which are currently loaded in the memory. Also another very interesting question is that who referring to a specific object.
Not from a given object. You would need to walk the forward references (which are tracked) of all the objects to find this out. I posted some code to do this from any starting object in the ZODB a long time ago. Search the mail archives if you're interested.
For this I got the oid of the object, deleted it and than tried to get it back via the oid. The trick is, that you'll only get a POSKeyError if you pack the database and flush the cache. This latter one was not obvious for me.
Such tricks are not necessary and cause your app to rely too much on the curent implementation of ZODB. Just let the database take care of this for you.
I used this trick only for exploring ZODB behavior. The application doesn't do any nasty tricks.
ok. -Casey