RE: [Zope-dev] Re: circular referenced persistent objects

2004-04-12 Thread zope
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.

  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.

Regards,
Sandor


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: circular referenced persistent objects

2004-04-12 Thread Casey Duncan
On Mon, 12 Apr 2004 10:57:43 -0500
[EMAIL PROTECTED] 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

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


RE: [Zope-dev] Re: circular referenced persistent objects

2004-04-12 Thread Tim Peters
[Sandor]
 This is still a question. Is there any way, to determine how many
 times a zodb persistent object is referenced?

ZODB itself doesn't keep track of that, although it's possible to write a
storage that does.  FileStorage does not.  BerkeleyStorage did (past tense
because Zope Corp has given up on BerkeleyStorage for now).

 sys.getrefcount seems to tell me only those references which are
 currently loaded in the memory.

Yes, sys.getrefcount() is a Python builtin, and only knows about in-memory
Python objects.  Python (and its builtins) doesn't know anything about
persistence.

 Also another very interesting question is that who referring
 to a specific object.

Like at the start, it would be possible to write a storage that saves away
that kind of inverted index, but I don't know of any that do.

Given a particular flavor of storage, and detailed knowledge of its
implementation, you can write scripts to crawl over the storage and compute
anything you like.  For FileStorage, the standard tools fsrefs.py and
fsdump.py illustrate two ways of picking apart an .fs file.


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )