[Zodb-checkins] CVS: ZODB4/ZODB - FileStorage.py:1.113
Mon, 16 Dec 2002 16:18:39 -0500
Update of /cvs-repository/ZODB4/ZODB
In directory cvs.zope.org:/tmp/cvs-serv8806
Forward ported from zodb3, add the cleanup() method and module
=== ZODB4/ZODB/FileStorage.py 1.112 => 1.113 ===
--- ZODB4/ZODB/FileStorage.py:1.112 Wed Dec 11 18:40:50 2002
+++ ZODB4/ZODB/FileStorage.py Mon Dec 16 16:18:39 2002
@@ -720,8 +720,14 @@
# - data can be None, which indicates a George Bailey object
# (i.e. one who's creation has been transactionally undone).
- # If prev_txn is not None, it should contain the same data as
- # the argument data. If it does, write a backpointer to it.
+ # prev_txn is a backpointer. In the original database, it's possible
+ # that the data was actually living in a previous transaction. This
+ # can happen for transactional undo and other operations, and is used
+ # as a space saving optimization. Under some circumstances the
+ # prev_txn may not actually exist in the target database (i.e. self)
+ # for example, if it's been packed away. In that case, the prev_txn
+ # should be considered just a hint, and is ignored if the transaction
+ # doesn't exist.
if transaction is not self._transaction:
@@ -1365,6 +1371,11 @@
raise CorruptedDataError(oid, h)
+ def cleanup(self):
+ """Remove all files created by this storage."""
def __init__(self, path, stop, la, lr, cla, clr):
@@ -2324,3 +2335,13 @@
def parseVersion(self, buf):
self.pnv, self.vprev = struct.unpack(">QQ", buf[:16])
self.version = buf[16:]
+ """Remove all FileStorage related files."""
+ for ext in '', '.old', '.tmp', '.lock', '.index', '.pack':
+ os.remove(filename + ext)
+ except OSError, e:
+ if e.errno != errno.ENOENT: