On 12/10/2002 12:53 PM, Evan Simpson wrote:
This past weekend I migrated a bunch of ZClasses and the web site that uses them from a scratch Zope instance into my production instance. Both run off the same 2.6 CVS branch checkout, connecting to ZEO servers running from the same ZEO trunk checkout.
For a while after starting the server, everything works fine. After an unpredictable time period ranging from minutes to hours, suddenly my ZClass instances become broken, and I start seeing this in my log, over and over:
2002-12-10T11:33:18 ERROR(200) ZODB Couldn't load state for '\x00\x00\x00\x00\x00\x01\x1f\xc9' Traceback (innermost last): Module ZODB.Connection, line 533, in setstate ImportError: No module named */rJ6Q2CNqMJDSN4Okpwiuw==
The object that fails to load state is a BTree Bucket belonging to the ZClass registry, and "/rJ6Q2CNqMJDSN4Okpwiuw==" is the GUID of one of my ZClasses. If I delete that ZClass, it complains about a different one.
My first recommendation would be to turn your ZClass registry into an OOBTree. OOBTree has been maintained and updated. Make a backup first :-) then from a debugging session: import Zope from BTrees.OOBTree import OOBTree app = Zope.app() root = app._p_jar.root() new_tree = OOBTree() for k, v in root['ZGlobals'].items(): new_tree[k] = v root['ZGlobals'] = new_tree get_transaction().commit() This won't necessarily solve it, but it might, since no one really knows the state of the old BTree module. I was surprised to discover only a few days ago that we never converted the code to create an OOBTree registry. (If this change solves your problem, I should probably fix OFS/Application.py.) Shane