transaction: only delete journal on successful abort/commit

This solves that the journal file was always deleted when the transaction
was deleted, no matter whether the abort (rollback) succeeded or not.
Thus, never supporting a hg recover. The journal file is now only deleted
on close (commit) or a successful abort.
This commit is contained in:
Henrik Stuart 2009-04-16 15:41:25 +02:00
parent b783216f45
commit c57f2e28ee

View File

@ -34,8 +34,6 @@ class transaction(object):
if self.journal:
if self.entries: self.abort()
self.file.close()
try: os.unlink(self.journal)
except: pass
def add(self, file, offset, data=None):
if file in self.map: return
@ -82,15 +80,23 @@ class transaction(object):
self.report(_("transaction abort!\n"))
failed = False
for f, o, ignore in self.entries:
try:
self.opener(f, "a").truncate(o)
except:
failed = True
self.report(_("failed to truncate %s\n") % f)
self.entries = []
self.report(_("rollback completed\n"))
if not failed:
self.file.close()
os.unlink(self.journal)
self.journal = None
self.report(_("rollback completed\n"))
else:
self.report(_("rollback failed - please run hg recover\n"))
def rollback(opener, file):
files = {}