#15036: Make a repeated changes and flushes work with single-file mailboxes
This commit is contained in:
parent
5ec84cd69e
commit
7cf6699699
|
@ -649,6 +649,7 @@ class _singlefileMailbox(Mailbox):
|
||||||
new_file.write(buffer)
|
new_file.write(buffer)
|
||||||
new_toc[key] = (new_start, new_file.tell())
|
new_toc[key] = (new_start, new_file.tell())
|
||||||
self._post_message_hook(new_file)
|
self._post_message_hook(new_file)
|
||||||
|
self._file_length = new_file.tell()
|
||||||
except:
|
except:
|
||||||
new_file.close()
|
new_file.close()
|
||||||
os.remove(new_file.name)
|
os.remove(new_file.name)
|
||||||
|
|
|
@ -386,6 +386,17 @@ class TestMailbox(TestBase):
|
||||||
# Write changes to disk
|
# Write changes to disk
|
||||||
self._test_flush_or_close(self._box.flush, True)
|
self._test_flush_or_close(self._box.flush, True)
|
||||||
|
|
||||||
|
def test_popitem_and_flush_twice(self):
|
||||||
|
# See #15036.
|
||||||
|
self._box.add(self._template % 0)
|
||||||
|
self._box.add(self._template % 1)
|
||||||
|
self._box.flush()
|
||||||
|
|
||||||
|
self._box.popitem()
|
||||||
|
self._box.flush()
|
||||||
|
self._box.popitem()
|
||||||
|
self._box.flush()
|
||||||
|
|
||||||
def test_lock_unlock(self):
|
def test_lock_unlock(self):
|
||||||
# Lock and unlock the mailbox
|
# Lock and unlock the mailbox
|
||||||
self.assertFalse(os.path.exists(self._get_lock_path()))
|
self.assertFalse(os.path.exists(self._get_lock_path()))
|
||||||
|
|
|
@ -67,6 +67,10 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #15036: Allow removing or changing multiple items in
|
||||||
|
single-file mailboxes (mbox, MMDF, Babyl) flushing the mailbox
|
||||||
|
between the changes.
|
||||||
|
|
||||||
- Issue #10133: Make multiprocessing deallocate buffer if socket read
|
- Issue #10133: Make multiprocessing deallocate buffer if socket read
|
||||||
fails. Patch by Hallvard B Furuseth.
|
fails. Patch by Hallvard B Furuseth.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue