[Zope-dev] Re: Five registerPackage results in unresolved
ConflictError
Philipp von Weitershausen
philipp at weitershausen.de
Tue May 20 13:25:00 EDT 2008
Believe something very very rotten in Five's registerPackage was fixed
by Rocky in r72986 [1]. As far as I can tell this was never merged to
the 1.4 branch, but I could we wrong.
[1] http://svn.zope.org/?rev=72986&view=rev
Sasha Vincic wrote:
> Forgot to say that this is Zope 2.9.8, Five 1.4 branch from svn, Plone 2.5.5
>
> /Sasha
>
> On Fri, May 16, 2008 at 12:03 PM, Sasha Vincic <sasha.vincic at gmail.com
> <mailto:sasha.vincic at gmail.com>> wrote:
>
> Hi
>
> On a server we have a ZEO server with 6 clients. When we
> start/restart the server we often get on random instance an
> AttributeError @@plone and all other browser pages. I have tracked
> it down to a ConflictError when installing Five on startup. See
> traceback bellow. To solve this I tried to set
> enable-product-installation = off to all except one instance but I
> still got errors.
> For now we restart the broken instances until they work, I have
> tried to set sleeping times up to couple seconds between the
> instances but it didn't make any difference.
>
> Five fails when it tries to execute the registerPackage in zcml
> files. Not the same product every time.
> First I thought it didn't respect the enable-product-instalation but
> that is checked in App.Product.initializeProduct method.
> So I played in fiveconfigure.py with transaction.savepoint() but no
> success but if I manually check App.Product.doInstall like in the
> diff below
>
> Now my question is if this is correct solution for the problem or
> will it have other side effects that I am not aware of? How do I
> write tests for an ConflicError during startup?
>
> /Sasha
>
> Index: fiveconfigure.py
>
>
> ===================================================================
>
>
> --- fiveconfigure.py (revision 86781)
>
>
> +++ fiveconfigure.py (working copy)
>
>
> @@ -23,7 +23,7 @@
>
>
> import warnings
>
>
>
>
>
> import App.config
>
>
> -from App.Product import initializeProduct
>
>
> +from App.Product import initializeProduct, doInstall
>
>
> from App.ProductContext import ProductContext
>
>
> import Products
>
>
> from zLOG import LOG, ERROR
>
>
> @@ -265,6 +265,8 @@
>
>
> if not hasattr(module_, '__path__'):
>
>
> raise ValueError("Must be a package and the " \
>
>
> "package must be filesystem based")
>
>
> + if not doInstall():
>
>
> + return
>
>
>
>
>
> app = Zope2.app()
>
>
> try:
>
>
>
>
> 2008-05-16 11:48:17 ERROR Zope Couldn't install Five
> Traceback (most recent call last):
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/OFS/Application.py",
> line 783, in install_product
> initmethod(context)
> File
> "/Users/sasha/Development/eea-buildout-clean/products/Five/__init__.py",
> line 31, in initialize
> zcml.load_site()
> File
> "/Users/sasha/Development/eea-buildout-clean/products/Five/zcml.py",
> line 41, in load_site
> _context = xmlconfig.file(file)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/zope/configuration/xmlconfig.py",
> line 560, in file
> context.execute_actions()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/zope/configuration/config.py",
> line 612, in execute_actions
> callable(*args, **kw)
> File
> "/Users/sasha/Development/eea-buildout-clean/products/Five/fiveconfigure.py",
> line 285, in _registerPackage
> transaction.commit()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_manager.py",
> line 96, in commit
> return self.get().commit(sub, deprecation_wng=False)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_transaction.py",
> line 380, in commit
> self._saveCommitishError() # This raises!
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_transaction.py",
> line 378, in commit
> self._commitResources()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_transaction.py",
> line 433, in _commitResources
> rm.commit(self)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/ZODB/Connection.py",
> line 484, in commit
> self._commit(transaction)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/ZODB/Connection.py",
> line 518, in _commit
> raise ConflictError(object=obj)
> ConfigurationExecutionError: ZODB.POSException.ConflictError:
> database conflict error (oid 0x28f61f, class App.Product.Product)
> in:
> File
> "/Users/sasha/Development/eea-buildout-clean/src/plone.session/plone/session/configure.zcml",
> line 5.4-5.65
> <five:registerPackage package="." initialize=".initialize" />
>
> Traceback (most recent call last):
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/Zope2/Startup/run.py",
> line 56, in ?
> run()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/Zope2/Startup/run.py",
> line 21, in run
> starter.prepare()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/Zope2/Startup/__init__.py",
> line 98, in prepare
> self.startZope()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/Zope2/Startup/__init__.py",
> line 257, in startZope
> Zope2.startup()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/Zope2/__init__.py",
> line 47, in startup
> _startup()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/Zope2/App/startup.py",
> line 103, in startup
> OFS.Application.initialize(application)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/OFS/Application.py",
> line 304, in initialize
> initializer.initialize()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/OFS/Application.py",
> line 333, in initialize
> self.install_products()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/OFS/Application.py",
> line 605, in install_products
> return install_products(app)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/OFS/Application.py",
> line 636, in install_products
> folder_permissions, raise_exc=debug_mode)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/OFS/Application.py",
> line 783, in install_product
> initmethod(context)
> File
> "/Users/sasha/Development/eea-buildout-clean/products/Five/__init__.py",
> line 31, in initialize
> zcml.load_site()
> File
> "/Users/sasha/Development/eea-buildout-clean/products/Five/zcml.py",
> line 41, in load_site
> _context = xmlconfig.file(file)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/zope/configuration/xmlconfig.py",
> line 560, in file
> context.execute_actions()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/zope/configuration/config.py",
> line 612, in execute_actions
> callable(*args, **kw)
> File
> "/Users/sasha/Development/eea-buildout-clean/products/Five/fiveconfigure.py",
> line 285, in _registerPackage
> transaction.commit()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_manager.py",
> line 96, in commit
> return self.get().commit(sub, deprecation_wng=False)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_transaction.py",
> line 380, in commit
> self._saveCommitishError() # This raises!
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_transaction.py",
> line 378, in commit
> self._commitResources()
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/transaction/_transaction.py",
> line 433, in _commitResources
> rm.commit(self)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/ZODB/Connection.py",
> line 484, in commit
> self._commit(transaction)
> File
> "/Users/sasha/Development/eea-buildout-clean/parts/zope2/lib/python/ZODB/Connection.py",
> line 518, in _commit
> raise ConflictError(object=obj)
> zope.configuration.config.ConfigurationExecutionError:
> ZODB.POSException.ConflictError: database conflict error (oid
> 0x28f61f, class App.Product.Product)
> in:
> File
> "/Users/sasha/Development/eea-buildout-clean/src/plone.session/plone/session/configure.zcml",
> line 5.4-5.65
> <five:registerPackage package="." initialize=".initialize" />
>
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Zope-Dev maillist - Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope )
More information about the Zope-Dev
mailing list