[ZODB-Dev] Problems when Conflict Resolution import code that try to open client storage

Chris Withers chris at simplistix.co.uk
Fri Sep 23 11:09:43 EDT 2005


Is there any reason these shouldn't be included in core Zope?

Chris

Dieter Maurer wrote:
> Paolo Linux wrote at 2005-9-21 11:23 +0200:
> 
>>...
>>I had zodb hanging when It had to solve Conflict situations.
>>It turned out to be that it tried to import some modules that
>>tried to instantiate ClientStorage...
>>
>>I easily fixed the hurting code...
>>Lesson learned:
>>
>>- never automatically register in db objects via __init__
>>  (or access to zodb, more generally)
>>
>>- instantiate ClientStorage only when required...
>>
>>Just a small suggestion. Is there any way to catch this problem
>>and issue a specific Execption rather that letting zeo hanging?
> 
> 
> I modified "runzeo" to prevent it to start Zope.
> 
> It looks like this:
> 
> def main(args=None):
>     try:
>         # DM: prevent Zope from being start up
>         #     (out of conflict resolution code)
>         import Zope; Zope.startup = None
>     except ImportError: pass
> 
> I also added the following patch:
> 
> # DM: 2004-06-03
> # activate Zope's INSTANCE_HOME magic.
> # This is necessary for conflict resolution of classes
> # defined in "$INSTANCE_HOME/Products"
> # Note that this is only a partial workaround. A complete solution
> # would give ZEO the same Python path and product configuration options
> # used by Zope. To get better control which classes are loaded
> # an additional registration facility for such classes would
> # be needed as well.
> try: from App import FindHomes
> except ImportError: pass # this is not Zope
> 

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk


More information about the ZODB-Dev mailing list