[ZODB-Dev] Catalog Search exposes BTrees bug?

Chris Withers chrisw@nipltd.com
Thu, 19 Sep 2002 10:47:11 +0100


Toby Dickenson wrote:
> On Thursday 19 Sep 2002 10:05 am, Chris Withers wrote:
> 
>>If anyone can suggest any reasons why this would be bad, please let me know
>>ASAP as I'm doing this right now :-S
> 
> To check that you are upgrading sufficient files, I suggest you look at an old 
> (Standalone)ZODB release. I have a feeling there is another directory in 
> addition ZODB/ and BTrees/ that is part of the (Standalone)ZODB 'package'

Hmmm, okay, badness is happening :-(

What I've done so far:

1. Checked out the Zope-2_6-branch tag of the Zope module.
2. Run the following in that checkout:

/usr/local/bin/python2.1 setup.py build_ext -i

3. Taken a copy of a compiled Zope 2.5.1 install (with ZEO 1.0 in it) and 
removed the following:

lib/python/ZODB/
lib/python/BTrees/
lib/python/ExtensionClass/
lib/python/ExtensionClass.so
lib/python/Persistence/
lib/python/ThreadedAsync/

4. Copied the above parts from the compiled Zope-2_6-branch checkout.

5. Adjusted the start scripts of my storage server and client to use the new 
base, stopped both of them and then staretd both of them.

Now, the storage server comes up fine.

On the client side, I originally got:
   File /usr/local/zope/2.5.1_newbtrees_base/lib/python/BTrees/Interfaces.py, 
line 16, in ?
ImportError: cannot import name Interface

...so I removed the Interfaces.py file.

I then got:
   File /usr/local/zope/2.5.1_newbtrees_base/lib/python/BTrees/__init__.py, line 
11, in ?
ImportError: No module named Interfaces

...so I commented out all the Interface importing lines in __init__.py

Unfortunately, I now get:

   File /usr/local/zope/2.5.1_newbtrees_base/lib/python/AccessControl/Role.py, 
line 353, in manage_setLocalRoles
     (Object: session_data)
AttributeError: 'None' object has no attribute 'register'

The offending line looks like:
         self.__ac_local_roles__=dict
...no mention of 'register' there, so I'm kinda stumped.

I'm guessing this is something to do with registering for a presistent transaction.

In any case, how do I fix it?

cheers,

Chris