On Mon, Apr 26, 2010 at 8:48 AM, Hanno Schlichting <ha...@hannosch.eu> wrote:
> I upgraded a ZODB 3.8 database server to 3.9 and suddenly zeopack
> fails. It looks to me like it is now failing on PosKeyErrors, which
> had been ignored so far.
> Is this a known problem and should be fixed? Or should I repair all
> the PosKeyErrors? Tracebacks below.
Hm. I don't know if it was intentional to ignore POSKeyErrors in the
old pack code. It seems like a bad idea to me.
For 3.9, I simplified the pack code quite a bit. It was sometimes not
clear what the old code was trying to do. The new code certainly does
raise exceptions when a missing record is encountered. It seems safer
to me to abandon a pack when there is a problem rather than proceeding
and possibly doing more harm.
Having said that, the distributed garbage collector in zc.zodbdgc
doesn't chech for missing records. (It uses a fundamentally different
algorithm to avoid the heavy seeking the the standard gc does and it
would have to go out of its way to detect dangling references.)
This discussion makes me wonder if I should update that to detect
missing records. :)
What do folks think about this? Should missing records be ignored? Or
should the missing record cause the pack (or maybe just GC) to fail?
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org