[Zope] ZCatalog len problem
Jonathan
dev101 at magma.ca
Sat Mar 24 11:03:58 EDT 2007
----- Original Message -----
From: "Andreas Jung" <lists at zopyx.com>
To: "Jonathan" <dev101 at magma.ca>; <zope at zope.org>
Sent: Saturday, March 24, 2007 10:43 AM
Subject: Re: [Zope] ZCatalog len problem
--On 24. März 2007 10:16:46 -0400 Jonathan <dev101 at magma.ca> wrote:
>> I have a ZCatalog and in the ZMI 'Catalog' tab it reports:
>>
>> Returns:
>>
>> len(sRes)= 1820
>> cnt= 1842
>>
>
> The result remains the same after reindexing the whole catalog?
Yes. I have an application that has 5 different ZCatalogs. The same problem
occurs in 3 of them. It seems that a ZCatalog with less than ~500 records is
ok, but the len problem increases with the number of records in the
ZCatalog:
actual len diff
108 108 0
322 322 0
613 607 6
1842 1820 22
3628 3590 38
>> It looks like the __len__ method in Catalog.py is not returning the
>> correct value - it returns self._length() which is set by the following
>> method (also in Catalog.py):
>>
>> def migrate__len__(self):
>> """ migration of old __len__ magic for Zope 2.8 """
>> if not hasattr(self, '_length'):
>> n = self.__dict__['__len__']()
>> del self.__dict__['__len__']
>> self._length = BTrees.Length.Length(n)
>>
>
> Is this migration code for pre-2.8 catalogs. This change was necessary
> because the new ExtensionClass implementation did not longer work
> with the scary implementation of the __len__ functionality of the Catalog
> class.
>
> If the result remains the same after reindexing the catalog there might be
> an issue with the increment/decrement calls of the _length counter
> with catalogObject/uncatalogObject...however no idea why...
Clearing the catalog and then running 'Find Objects' returns the same
incorrect number every time (at least the error is consistent!). I have also
loaded records into the ZCatalogs via a python script/external method and
the record counts are exactly the same as with the 'Find Objects'.
I don't think it is an indexing problem as the indexes are reporting the
correct number of entries. It is just the _length() method of the catalog
that seems to be the problem (but I have noooo idea how to fix it!)
Should I file a bug report on this?
Jonathan
More information about the Zope
mailing list