
sasha.vincic at gmail
May 21, 2008, 3:47 AM
Post #5 of 10
(294 views)
Permalink
|
|
Re: Re: Five registerPackage results in unresolved ConflictError
[In reply to]
|
|
On Tue, May 20, 2008 at 8:30 PM, Rob Miller <ra[at]burningman.com> wrote: > Philipp von Weitershausen wrote: > >> 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. >> > This seams to work when you start instances without debug, which production is but it still fails the same way with debug on. > > i can confirm that this seems to be helping. there's an easier way to > generate the error that Sasha is seeing... you can reliably reproduce it on > Zope 2.9.x w/ Five 1.4 just by starting a zeo server with no Data.fs file, > and then trying to connect with a zeo client. if you have any > <five:registerPackage> tags, the first connection will _always_ fail with a > ConflictError. subsequent connections will work, but the initial one will > fail. (we've had to put a './zopectl run do_nothing.py' steps into our > build code... :-P) > So you run ./zopectl run do_nothing.py before you started each instance? Is that better then my doInstall() check? /Sasha > > anyway, the error is not happening with Zope 2.10 and Five 1.5.6. glad to > know it's been resolved. :-) > > -r > > > > [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 ) >
|