mirror of
https://github.com/progval/Limnoria.git
synced 2025-05-01 07:51:06 -05:00
Only rollback if we haven't closed.
This commit is contained in:
parent
823bfb040f
commit
ecd67cb7a7
13
src/utils.py
13
src/utils.py
@ -681,6 +681,7 @@ class AtomicFile(file):
|
|||||||
Opens the file in 'w' mode."""
|
Opens the file in 'w' mode."""
|
||||||
def __init__(self, filename, allowEmptyOverwrite=False):
|
def __init__(self, filename, allowEmptyOverwrite=False):
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
self.closed = False
|
||||||
self.rolledback = False
|
self.rolledback = False
|
||||||
self.allowEmptyOverwrite = allowEmptyOverwrite
|
self.allowEmptyOverwrite = allowEmptyOverwrite
|
||||||
self.tempFilename = '%s.%s' % (filename, mktemp())
|
self.tempFilename = '%s.%s' % (filename, mktemp())
|
||||||
@ -688,16 +689,18 @@ class AtomicFile(file):
|
|||||||
|
|
||||||
def rollback(self):
|
def rollback(self):
|
||||||
#print 'AtomicFile.rollback'
|
#print 'AtomicFile.rollback'
|
||||||
super(AtomicFile, self).close()
|
if not self.closed:
|
||||||
if os.path.exists(self.tempFilename):
|
super(AtomicFile, self).close()
|
||||||
print 'AtomicFile: Removing %s.' % self.tempFilename
|
if os.path.exists(self.tempFilename):
|
||||||
os.remove(self.tempFilename)
|
print 'AtomicFile: Removing %s.' % self.tempFilename
|
||||||
self.rolledback = True
|
os.remove(self.tempFilename)
|
||||||
|
self.rolledback = True
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
#print 'AtomicFile.close'
|
#print 'AtomicFile.close'
|
||||||
if not self.rolledback:
|
if not self.rolledback:
|
||||||
#print 'AtomicFile.close: actually closing.'
|
#print 'AtomicFile.close: actually closing.'
|
||||||
|
self.closed = True
|
||||||
super(AtomicFile, self).close()
|
super(AtomicFile, self).close()
|
||||||
size = os.stat(self.tempFilename).st_size
|
size = os.stat(self.tempFilename).st_size
|
||||||
if size or self.allowEmptyOverwrite:
|
if size or self.allowEmptyOverwrite:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user