[ZODB-Dev] Low-level reference finding, tracking, deleting?

Jeff Shell jeff at bottlerocket.net
Sat Apr 17 11:02:43 EDT 2010


On Apr 17, 2010, at 7:43 AM, Laurence Rowe <l at lrowe.co.uk> wrote:

> On 17 April 2010 05:27, Jeff Shell <jeff at bottlerocket.net> wrote:
>> We encountered a problem during an export/import in a Zope 3 based application that resulted in something not being importable. This is from our very first Zope 3 based application, and I stumbled across some very old adapter/utility registrations that I thought I had cleared out. There are references to `zope.interface.adapter.Null` which haven't been around for years. This is in an old `LocalAdapterRegistry` which, again, I thought I had removed along time ago. These objects and what they reference are not part of our normal object graph, and I was surprised to see them.
>> 
>> Given an oid, how can I trace what references that object/oid? There is something in our normal object hierarchy retaining a reference, but I don't know how to find it, and imagine that trying to investigate/load the objects from the ZODB level will help me find the culprit.
> 
> I describe how to do this in an article here:
> http://plone.org/documentation/kb/debug-zodb-bloat

Oh yeah! I remember looking at that article a few months back. Thanks for the reminder. Looking at our fsdump results, this database seems to have quite a bit of old items that should have been packed / garbage collected a long time ago. This could help me find out why they're not going away.

> Since then, Jim has written zc.zodbgc in which the
> "multi-zodb-check-refs script will optionally produce a database
> of reverse references".
> http://www.mail-archive.com/zodb-dev@zope.org/msg04389.html



More information about the ZODB-Dev mailing list