[Zope] The immortal POSKeyError

Roché Compaan roche at upfrontsystems.co.za
Mon Jul 19 15:27:35 EDT 2004


* george donnelly <list at zettai.net> [2004-07-19 21:09]:
> Roché Compaan <roche at upfrontsystems.co.za> on 7/17/04 wrote:
> 
> >If you're lucky, it's just the ZODB index file that got corrupted, so
> >try deleting 'Data.fs.index', and hope it rebuilds itself correctly
> when
> >restarting. I probably don't have to tell you this but do it on a copy
> >of your instance.
> 
> thanks but nope that's not it

Try removing the reference from the parent folder, without accessing the
bad object:

    id = 'BadId'
    folder._objects=tuple(filter(lambda i,n=id: i['id']!=n, folder._objects))
    delattr(folder, id)

'manage_delObjects', calls '_getOb' to do additional checks before
deleting an object, and in your case this will give a POSKeyError.

You'll be left with a dangling reference, but at least siblings of the
bad folder will be accessible again.

-- 
Roché Compaan
Upfront Systems                 http://www.upfrontsystems.co.za


More information about the Zope mailing list