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 <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> 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" />