- 06 Jul, 2016 3 commits
-
-
Jim Fulton authored
Conflicts: src/ZEO/ClientStorage.py
-
Jim Fulton authored
Implement iMultiCommitStorage
-
Jim Fulton authored
-
- 02 Jul, 2016 2 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
As it depends on getting serials from stpre or vote
-
- 01 Jul, 2016 4 commits
-
-
Jim Fulton authored
ZEO's vote error handling was extremely and weirdly complicated. There's a hysterical explanation: Originally, the ZEO protocol was synchronous and mirrored the storage API. That was too slow, so store was made asynchronous. But then there was no way to return new serials, so we added a serialnos client API that the server called during TPC. This was used both to serials and errors. Later, tpc_vote was added, which is a synchronous method. That would have been an execllent opportunity to fix this, but noooooooooo. I'd like the server vote logic to get simpler, and we also want to get rid of serialnos, as it makes it hard to commit multiple transactions at once on the client. We can't get rid of serialnos now, because the client needs to work with old servers. Of course, nothing is easy. There was a special edge case where if the client saw an unhandled conflict error, it would invalidate it's cache for that object, allowing it to eventually recover when caches had missed invalidations. This required a change to ClientStorage, which meant that the server wouldn't work with older ZEO versions, which meant that the server could only support protocol Z5, which in tern affected protocol-negotiation tests....
-
Jim Fulton authored
There are some cases where we want to touch the cache outside of the I/O thread. Including: - ClientStorage wants to to invalidata cache entries if it gets a conflict error in voting. - loadBefore can probably be optimized by checking the cache in the client thread. (This will be safe for loadBefore, because the intent in practice is never to load current data.
-
Jim Fulton authored
This used to happen via the server calling serialnos, but ZEO 5 servers no longer do this. For the reason for invalidating the cache entry, see the new comment.
-
Jim Fulton authored
It's a shame that Tox is unable (or unwilling) to get test dependencies from package meta data. :(
-
- 29 Jun, 2016 2 commits
-
-
Jim Fulton authored
I develop on a mac (for better or worse) so I know that mac tests are being run.
-
Jim Fulton authored
-
- 28 Jun, 2016 6 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
- 27 Jun, 2016 6 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
- To make tests run faster with j99, and - To isolate some tests that often seem to fail spuriously but pass when run by themselves.
-
Jim Fulton authored
And maybe avoid spurious test failures due to port contention.
-
Jim Fulton authored
It appeared that some tests were failing because servers weren't closing down. Modified the test forker module and the server to be more paranoid about closing the server. This seems to have helped test stability. (Or maybe I accidentally fixed something while flailing :)).
-
Jim Fulton authored
Where we check for a disconnect, get disconnected and vote
-
- 26 Jun, 2016 2 commits
-
-
Jim Fulton authored
Because running it single-threaded was unstable, at least in the tests. See http://bugs.python.org/issue27392
-
Jim Fulton authored
SSL didn't work on Linux because of an incompatibility between non-blocking sockerts and SSL (which wasn't an issue on Mac OS X for some reason). I decided to try switching the server to use a single thread. This led to a performance improvement for zodbshootout and a lower-level networking test. I refactored the server listening logic and kept (at least for now) both the multi-threaded and the single-threaded version. (The multi-threaded logic can be used by changing a single import. Tests pass with both.). I'm a bit worried about the asyncio server. See http://bugs.python.org/issue27386 Tests appear to be less stable using asyncio.server on my Mac. :(
-
- 24 Jun, 2016 4 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
- 23 Jun, 2016 1 commit
-
-
Jim Fulton authored
-
- 22 Jun, 2016 5 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
Jim Fulton authored
-
- 21 Jun, 2016 1 commit
-
-
Jim Fulton authored
So travis doesn't hate us.
-
- 20 Jun, 2016 4 commits
-
-
Jim Fulton authored
-
Jim Fulton authored
Because we were computing the size info in the commit callback, which might be before before the inderlying data were committed. This caused the computation to be wrong in some cases. Instead we get and send the size information after committing.
-
Jim Fulton authored
-
Jim Fulton authored
-