[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