[Zope-dev] Conflict Errors

Chris McDonough chrism@digicool.com
Mon, 20 Nov 2000 12:35:40 -0500


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 )
>
>