[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