[Zope] Finding unused products

Gaute Amundsen gaute at div.org
Tue Dec 1 02:56:21 EST 2009


On Mon, 2009-11-30 at 10:59 -0500, Tres Seaver wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Gaute Amundsen wrote:
> > On Sun, 2009-11-29 at 16:05 -0500, Tres Seaver wrote:
> >> -----BEGIN PGP SIGNED MESSAGE-----
> >> Hash: SHA1
> >>
> >> Gaute Amundsen wrote:
> >>> On Sun, 2009-11-29 at 12:32 +0100, Jens Vagelpohl wrote:
> >>>> On Nov 29, 2009, at 11:59 , Gaute Amundsen wrote:
> >>>>
> >>>>> Quick question before I reinvent.
> >>>>>
> >>>>> Is there some established way of finding products which have no
> >>>>> instances in zodb, and can be safely removed?
> >>>> No there isn't. You may have to invest some time writing a script that
> >>>>  visits all objects to find out what products they belong to. It may
> >>>>  not be worth the effort.
> >>>>
> >>>> jens
> >>> Unfortunately it has "not been worth the effort" for a number of years,
> >>> but now it has become unavoidable.
> >>> Walking the tree it is then.
> >> You could probably work directly with the pickles way faster than
> >> activating every object in a large site:  look at the 'fsdump' script
> >> for clues.
> >> Tres.
> > 
> > Thanks for the tip, but testing a few tings now, it seems I would
> > probably spend way more time on the learning-curve than I'd save in
> > parsing.
> > 
> > I think, I'll rather stick my expensive parse results i a table, and
> > work from that.
> > 
> > Unless you think otherwise and can point me towards how to get both the
> > path, and the metatype out of that pickle. :-)
> 
> The pickle holds the dotted name of the instance class, which should be
> a clue. ;)

I spotted that playing around with fsdump yes.

On second thought I guess my hidden assumption was that
context.all_meta_types() would give me the best list of installed
products to compare against, and thus I would need the actual meta_type
string.

On examining the results of the first run of my db-based script, I'm not
so sure. It's after all just some strings.. 
Perhaps I ought to rephrase that as a question :)

Can I rely on context.all_meta_types() being complete, or could a
product have installed objects that would not be in that list?

Is there some other, more reliable way to link an object to it's
product?

Gaute







More information about the Zope mailing list