[ZODB-Dev] Preliminary notes from fixing a bad data.fs

ethan fremen lists at mindlace.net
Fri Jan 7 16:10:15 EST 2005


OK, so I think I've finally gone through and un-wedged this Data.fs.

My first and foremost question is: what is the value of dying cold on a
pack if an object is unpickleable? I modified pack.py to just return an
empty list if, when searching for references, it was unable to pickle
instead of dying- i.e. when it calls referencesf.

Also, perhaps I'm just "special", but fsrecover.py seems to have created
a Data.fs.index with some bizzare information; at least I got tracebacks
like:

2005-01-07T13:12:50 ERROR(200) Zope Couldn't install ExternalMethod
Traceback (most recent call last):
   File "/home/emf/zope/lib/python/OFS/Application.py", line 791, in
install_product
     get_transaction().commit()
   File "/home/emf/zope/lib/python/ZODB/Transaction.py", line 241, in commit
     ncommitted += self._commit_objects(objects)
   File "/home/emf/zope/lib/python/ZODB/Transaction.py", line 356, in
_commit_objects
     jar.commit(o, self)
   File "/home/emf/zope/lib/python/ZODB/Connection.py", line 454, in commit
     s=dbstore(oid,serial,p,version,transaction)
   File "/home/emf/zope/lib/python/ZODB/FileStorage.py", line 782, in store
     serials=(oserial, serial))
ConflictError: database conflict error (oid 0x05, serial this txn
started with 0x00 1900-01-01 00:00:00.000000, serial currently committed
0x0339fe733cf5ddf7 2001-01-20 21:39:14.287598)

The Zope started fine when I deleted Data.fs.index.

Aside from that, I think I may have wrapped up a few zope-specific
methods for nuking invalid object references... I'll probably clean them
up further, and see if it can't be distributed.

~ethan fremen



More information about the ZODB-Dev mailing list