[ZODB-Dev] Recovering Corrupt Database part2
tomasz
tomasz@pucky.ods.org
Wed, 6 Nov 2002 10:33:43 +0000 (UTC)
I looked around for the fsrefs script but couldnt find it anywhere. can
you point me to where i could find it.
--tomasz
On Mon, 4 Nov 2002, Jeremy Hylton wrote:
> >>>>> "TZ" == tomasz <tomasz@pucky.ods.org> writes:
>
> TZ> This is a follow up email that was sent out a week ago by my
> TZ> partner Cody Smith. it can be found at.
>
> TZ> http://lists.zope.org/pipermail/zodb-dev/2002-October/003476.html
>
> TZ> After multiple suggestions to upgrade to Zope-2.6 from
> TZ> Zope-2.3.2 we did so. We retrieved our backups and ran them
> TZ> through the fsrecover script with a "-p" and without it.
>
> TZ> When the script runs it throws multiple Version lock error.
>
> The error is because of a Zope/ZODB version. Zope is complaining that
> it can't modify an object, because it is modified in a version. Once
> an object has been modified in a version, it can't be modified by
> non-version users until the version is aborted or committed.
>
> > ZODB.POSException.VersionLockError:
> > ("'\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x83'", 'content_cntrl')
>
> This error shows the oid of the object that is locked and the name of
> the version. Does the name 'content_cntrl' sound familiar to you?
> It was picked by a user of the site :-).
>
> You may want to ask on zope-dev what else you can do. It sounds like
> the right thing to do is to abort the particular version, but I'm not
> sure how to do that from Zope or how to get Zope to start while this
> object is locked.
>
> Maybe you could open the database and try this:
>
> >>> db = ZODB.DB(fs)
> >>> db.abortVersion('content_cntrl')
> >>> get_transaction().commit()
> >>> db.close()
>
> I also wonder if you should worry about the drop in database size. It
> might be interesting to run fsrefs.py over the new database and see if
> you've lost any objects.
>
> Jeremy
>
>