[ZODB-Dev] ZODB 3.9/3.8 incompatibility (was Re: Data.fs size grows non-stop)

Jim Fulton jim at zope.com
Thu Dec 10 10:08:36 EST 2009

On Thu, Dec 10, 2009 at 5:58 AM, Marius Gedminas <marius at gedmin.as> wrote:
> On Wed, Dec 09, 2009 at 01:04:03PM -0500, Jim Fulton wrote:
>> On Wed, Dec 9, 2009 at 12:06 PM, Marius Gedminas <marius at gedmin.as> wrote:
>> ...
>> > (Supporting both ZODB 3.8 and 3.9 is kinda tricky, but with some very
>> > ugly hacks I managed.)
>> This sounds like something that needs to be fixed. Can you share some of the
>> issues you ran into? (Or maybe file bugs reports.)
> Two issues only:
>  * In ZODB 3.8 PersistentDict and PersistentMapping are unrelated
>    classes, so if I want to have adapters for both, I have to register
>    them separately in ZCML.  In ZODB 3.9, PersistentDict is an alias
>    for PersistentMapping, so I get a ZCML configuration conflict error
>    if I have adapter directives for both.

OK, it's impractical to do anything about this.

>    Solved by defining a decoy class for one of the adapters so they
>    don't conflict.

Hm, I'm not sure I follow this.  You could have used a different
approach of providing the second adapter registration as an override.

>  * In ZODB 3.8, the 'version' argument of ClientStorage.history (as well
>    as other kinds of storages, I suppose) is mandatory.  In ZODB 3.9
>    it's gone.

It's mandatory in ClientStorage and optional in FileStorage. (MappingStorage and
DemoStorage don't have a history method in 3.8.

I suggest we treat this as a bug in 3.8 and make the version argument
to ClientStorage's history method optional in a 3.8 bug fix release.

>    Solved by peeking into the method signature with inspect.getargspec()
>    and supplying a version only if it's needed.

Ick. :)

>> In particular, I think it should be a goal that it isn't too hard to
>> write code that works with both ZODB 3.8 and 3.9.
> Normal code doesn't usually play with storage.history, I'd say, so I'm
> not too peeved by having to do various contortions.

Zope 2 had (has?) a standard view for looking at an object's history
that I found very useful. I wish there was one for Zope3.

History can be very useful in my experience.


Jim Fulton

More information about the ZODB-Dev mailing list