[Zope] zope 2.6.x, zcatalog and keyerrors

Bakhtiar A Hamid kedai@kedai.com.my
Fri, 18 Apr 2003 09:27:47 +0800


On Thursday 17 April 2003 09:40 pm, Casey Duncan wrote:
> This (obviously) should not happen. This might be a bug in ZCTextIndex, or
> possibly an inconsistency bug in BTrees exposed by ZCTextIndex.
>
> Here is what I suggest:
>
> Try to write a script which creates and destroys these ZClasses in
> sufficient quantity to expose the error (possibly with an external XMLRPC
> script). If you can get it to fail over time with any consistency, then I
> would be interested in seeing this script and your ZODB.

i'll try and do this this weekend, or next week.  ill post the result, if any

>
> In leiu of that, you could run the BTree consistency check right after the
> error occurs (but before recataloging) to see if the BTrees are getting
> hosed. From the python command line (run from Zope/lib/python) that would
>
> look like:
> >>> import Zope; a = Zope.app()
> >>> idx = a.Catalog._catalog.getIndex('Name of ZCTextIndex')
> >>> from BTrees.check import check
> >>> check(idx.index._wordinfo)
> >>> check(idx.index._docweight)

i have two ZCTextIndex for this particular app - bodytext, and title
the test passed for bodytext, but fot title i got:

>>> check(idx.index._wordinfo)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/local/Zope-2.6-cvs/lib/python/ZODB/Connection.py", line 525, in 
setstate
    raise ReadConflictError(object=object)
ZODB.POSException.ReadConflictError: database read conflict error (oid 
0000000001205126, class Products.ZCTextIndex.ZCTextIndex.ZCTextIndex)

>
> If either of those check() calls fail then it is likely a BTree bug.
> Otherwise its a bug somewhere else.
>
> -Casey


thanks