- 13 Apr, 2015 1 commit
-
-
Jason Madden authored
-
- 11 Apr, 2015 1 commit
-
-
Jason Madden authored
The python _p_activate does state management like the C version does: set to changed during jar.setstate to prevent objects that set attributes in their __setstate__ from being registered with the jar, and unconditionally mark the object as saved when finished. This fixes problems with BTrees and DB churn, among other things. Test this.
-
- 10 Apr, 2015 2 commits
-
-
Jason Madden authored
Deleting the jar of a ghosted Python persistent object shouldn't try to activate it. This was an error encountered testing ZEO: ```python File "//Projects/GithubSources/ZEO/src/ZEO/tests/testZEO.py", line 1566, in ZEO.tests.testZEO.gracefully_handle_abort_while_storing_many_blobs Failed example: c.tpc_abort(t) Exception raised: Traceback (most recent call last): File "//bin/pypy/lib-python/2.7/doctest.py", line 1315, in __run compileflags, 1) in test.globs File "<doctest ZEO.tests.testZEO.gracefully_handle_abort_while_storing_many_blobs[12]>", line 1, in <module> c.tpc_abort(t) File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 754, in tpc_abort self._invalidate_creating() File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 775, in _invalidate_creating del o._p_jar File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 287, in __delattr__ object.__delattr__(self, name) File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 92, in _del_jar self.__setattr__('_Persistent__jar', None) File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 249, in __getattribute__ oga(self, '_p_activate')() File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 358, in _p_activate jar.setstate(self) File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 869, in setstate self._setstate(obj) File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 910, in _setstate p, serial = self._storage.load(obj._p_oid, '') File "//Projects/GithubSources/ZEO/src/ZEO/ClientStorage.py", line 842, in load data, tid = self._server.loadEx(oid) File "//Projects/GithubSources/ZEO/src/ZEO/ServerStub.py", line 176, in loadEx return self.rpc.call("loadEx", oid) File "//Projects/GithubSources/ZEO/src/ZEO/zrpc/connection.py", line 781, in call raise inst # error raised by server POSKeyError: 0x02'') ```
-
Jason Madden authored
-
- 09 Apr, 2015 21 commits
-
-
Jason Madden authored
While we're optimizing, use a set to combine two 'specialness' checks in getattribute into one. This reduces the ZODB test runtime by about another 4-5%
-
Jason Madden authored
In _p_accessed combine two exception blocks as suggested by @tseaver, plus actually use the oid value we just cached. This knocks another 2 million calls to __getattribute__ out.
-
Jason Madden authored
Optimizations. Primarily, this changes _p_accessed to avoid recursively calling back to __getattribute__. When running the ZODB test suite, this changes the number of times that __getattribute__ is called from over 44 MILLION to just 1.3 million (and changes the cumulative time from 38 seconds to 11 seconds). Secondarily, this potentially also makes a few things safer for Broken objects.
-
Jason Madden authored
Detect whether we need to do a gc after sweeping the cache. Document why we would need to or not. Add tests to make sure it works (previously only in the ZODB tests.)
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
More functional tests from ZODB: test persistent class invalidation, and changing the _p_oid and _p_jar when not in a jar's cache.
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
Detect the bitness of the current process in order to better match the C TimeStamp hashcode. Fixes zopefoundation/persistent#21
-
Jason Madden authored
Detect the bitness of the current process in order to better match the C TimeStamp hashcode. Fixes zopefoundation/persistent#21
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
- 08 Apr, 2015 15 commits
-
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
Jason Madden authored
-
-
Jason Madden authored
More on C and ZODB compatibility for Python PickleCache and Persistent. There are some interconnected lifetime issues that this solves for ZODB's cache tests, and what appear to be some genuine bugs in invalidation.
-
Jason Madden authored
Match the C implementation for the way in which _p_jar and _p_oid can be changed. ZODB depends on this.
-
Jason Madden authored
Support shrinking the Python PickleCache based on a target byte count, and clear out references to ejected objects when done. This makes the ZODB testConnection and testConnectionSavepoint tests pass but is not tested here.
-
Jason Madden authored
The Python version of PickleCache.minimize does what the C version does and ghosts the evicted objects.
-
Jason Madden authored
-
Jason Madden authored
The Python PickleCache is close enough to the C PickleCache that ZODB's testCache passes. Required some small updates and additions to our own test cases; the update_object_size_estimation is not tested here yet.
-
Jason Madden authored
In the case of a ZODB broken object, the Python persistent implementation needs to bypass the _setattr_ implementation when working with its own internal state variables. This much gets the ZODB broken tests to pass. Need to figure out how to test this locally.
-
Jason Madden authored
-
Jason Madden authored
-
-