[ZODB-Dev] How to avoid ConflictErrors in BTrees ?

Dieter Maurer dieter at handshake.de
Fri Feb 1 13:32:33 EST 2008


Andreas Jung wrote at 2008-2-1 12:13 +0100:
>
>
>--On 1. Februar 2008 03:03:53 -0800 Tarek Ziadé <ziade.tarek at gmail.com> 
>wrote:
>>
>> Since BTrees are written in C, I couldn't add my own conflict manager to
>> try to merge buckets. (and this is
>> way over my head)
>>
>
>But you can inherit from the BTree classes and hook your 
>_p_resolveConflict() handler into the Python class - or?

I very much doubt that this is a possible approach:

  A BTree is a complex object, an object that creates new objects
  (partially other BTrees and partially Buckets) when it grows.

  Giving the application used "BTree" class an "_p_resolvedConflict"
  will do little -- because the created subobjects (Buckets mainly)
  will not know about it.

  Note especially, that the only effective conflict resolution
  is at the bucket level. As you can see, there is currently
  no way to tell a "BTree" which "Bucket" class it should use
  for its buckets -- this renders your advice ineffective.



-- 
Dieter


More information about the ZODB-Dev mailing list