- 23 Sep, 2019 2 commits
-
-
Julien Muchembled authored
IStorage implementations used to do this task themselves which leads to code duplication and sometimes bugs (one was fixed recently in NEO). Like for object serialization, this should be done by the upper layer (Connection). This commit also provides a way to get raw extensions data while iterating over transactions (this is actually the original purpose[2]). So far, extension data could only be retrieved unpickled, which caused several problems: - tools like `zodb dump` [1] cannot dump data exactly as stored on a storage. This makes database potentially not bit-to-bit identical to its original after restoring from such dump. - `zodb dump` output could be changing from run to run on the same database. This comes from the fact that e.g. python dictionaries are unordered and so when pickling a dict back to bytes the result could be not the same as original. ( this problem can be worked-around partly to work reliably for e.g. dict with str keys - by always emitting items in key sorted order, but it is hard to make it work reliably for arbitrary types ) Both issues make it hard to verify integrity of database at the lowest possible level after restoration, and make it hard to verify bit-to-bit compatibility with non-python ZODB implementations. For this, TransactionMetaData gets a new 'extension_bytes' attribute and and common usage becomes: * Application committing a transaction: - 'extension' is set with a dictionary - the storage gets the bytes via 'extension_bytes' * Iteration: - the storage passes bytes as 'extension' parameter of TransactionMetaData - the application can get extension data either as bytes ('extension_bytes') or deserialized ('extension'): in the former case, no deserialization happens and the returned value is exactly what was passed by the storage [1] https://lab.nexedi.com/nexedi/zodbtools [2] https://github.com/zopefoundation/ZODB/pull/183Co-Authored-By: Kirill Smelkov <kirr@nexedi.com>
-
Julien Muchembled authored
-
- 20 Sep, 2019 2 commits
-
-
Jason Madden authored
TransactionalUndo closes storages it opens.
-
Jason Madden authored
Fixes #268.
-
- 09 May, 2019 3 commits
-
-
Jason Madden authored
Fix ResourceWarnings seen during testing, and a testrunner orphaned thread warning
-
Jason Madden authored
-
Jason Madden authored
Fixes #266
-
- 08 May, 2019 3 commits
-
-
Jason Madden authored
Drop support for Python 3.4
-
Jason Madden authored
-
Jason Madden authored
isAlive -> is_alive. Fixes #263
-
- 07 May, 2019 2 commits
-
-
Jason Madden authored
Also upbate the .travis.yml to pick up modern versions of PyPy and PyPy3
-
Jason Madden authored
-
- 18 Mar, 2019 2 commits
-
-
Marius Gedminas authored
repozo -B with missing -f should show a clear error message
-
Marius Gedminas authored
Fixes #259.
-
- 06 Mar, 2019 3 commits
-
-
Nicolas Wavrant authored
Repozo : add an option to verify on recovery
-
Nicolas Wavrant authored
-
Nicolas Wavrant authored
So if recovering a ZODB fails for any reason, it doesn't leave behind a partial file which may be confused with the recovered file (as it bears same name).
-
- 29 Jan, 2019 2 commits
-
-
Tres Seaver authored
Spellcheck error in ZODB2.rst
-
sblondon authored
Voalitile -> Volatile
-
- 13 Dec, 2018 2 commits
-
-
Nicolas Wavrant authored
To give users hints about their origin if cleaning isn't done correctly
-
Nicolas Wavrant authored
-
- 23 Nov, 2018 1 commit
-
-
Nicolas Wavrant authored
But let the caller opening the file closing it
-
- 25 Oct, 2018 5 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
Prep ZODB 5.5.1 release.
-
Tres Seaver authored
-
Michael Howitz authored
Fix KeyError on releasing resources of a Connection when closing the DB.
-
Michael Howitz authored
-
- 24 Oct, 2018 3 commits
-
-
Michael Howitz authored
-
Michael Howitz authored
-
Michael Howitz authored
-
- 14 Oct, 2018 2 commits
-
-
Jim Fulton authored
Use the regular transaction manager wrapped by the thread-transaction manager so we can call unregisterSynch when close is called from another thread, typically during database shutdown.
-
Jim Fulton authored
Also, use a daemonic thread so that the test runner doesn't hand waiting for the thread to die.
-
- 13 Oct, 2018 4 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
Prep 5.5.0 release.
-
Tres Seaver authored
-
Tres Seaver authored
Avoid most calls to time.sleep() in the tests by mocking time.[gm]time
-
- 03 Oct, 2018 1 commit
-
-
Sune Broendum Woeller authored
-
- 21 Sep, 2018 1 commit
-
-
James Bradshaw authored
grammar (typo)
-
- 31 Aug, 2018 1 commit
-
-
Tres Seaver authored
Lifted from PR #164.
-
- 24 Aug, 2018 1 commit
-
-
Jason Madden authored
This happens on Python 3.7, evidinced by Appveyor (https://ci.appveyor.com/project/jimfulton/zodb/build/1.0.176/job/ehutnhnvbm28w5xl) but not travis because we run coverage on travis, and coverage disables refcounts of None.
-