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