It happens when more than one thread tries to modify the same object in storage at the same time. It's Zope's equivalent of record-locking... It's normal. There's no corruption or anything, it's telling you that it avoided a write that might have caused problems. Zope tries three times to retry the write. If the object is still locked by another database connection after three writes, it propogates the exception up to the app level. That's the error you see. Careful application coding can reduce the chance of conflict errors. I've seen conflict errors pop up a lot when the catalog is used for whatever reason, especially with catalogaware. I bet it happens on a catalog write for you. I think this may have something to do with the current BTree implementation's propensity to write child-parent relationships all the way up and down the tree every time a node changes. I know your next questions are going to be "why?" and "how do I fix it?" and "why don't you fix it?". Chris Petrilli did some work on the catalog for 2.2.3 that might have a positive impact. The catalog is (I think) being actively worked on.... if you can nail it down some, it'd probably be helpful to figure out when the conflicterror occurs and pass it along to Chris in the collector. Besides that, I don't have any specific hints for you, besides waiting for the new BTree implementation. The answer to "when?": I have no idea. HTH, C ----- Original Message ----- From: "Chris Withers" <chrisw@nipltd.com> To: <zope-dev@zope.org> Sent: Monday, November 20, 2000 10:46 AM Subject: [Zope-dev] Conflict Errors
Hi,
Whenever there's a lot of writes and the occasional read going on, we get the following error:
2000-11-19T16:03:44 INFO(0) Z2 CONFLICT Competing writes at, /aFolder/anObject Traceback (innermost last): File D:\Program Files\Zope\lib\python\ZPublisher\Publish.py, line 175, in publ ish File D:\Program Files\Zope\lib\python\Zope\__init__.py, line 235, in commit File D:\Program Files\Zope\lib\python\ZODB\Transaction.py, line 251, in commit
File D:\Program Files\Zope\lib\python\ZODB\Connection.py, line 267, in commit ConflictError: y
Can anyone shed any light on: -what this means -how bad it is -how we can make it stop happening
cheers,
Chris
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )