- 16 Mar, 2022 1 commit
-
-
Michael Howitz authored
-
- 15 Mar, 2022 5 commits
-
-
Dieter Maurer authored
fix #150
-
Michael Howitz authored
-
dieter authored
-
-
dieter authored
-
- 14 Mar, 2022 1 commit
-
-
dieter authored
-
- 11 Mar, 2022 1 commit
-
-
dieter authored
-
- 11 Aug, 2021 2 commits
-
-
Jens Vagelpohl authored
Replaced 'cache-size-bytes' with 'cache-size' in the documentation
-
Éloi Rivard authored
-
- 09 Aug, 2021 3 commits
-
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
- 29 Apr, 2021 2 commits
-
-
Jens Vagelpohl authored
Fix typo client_label -> client-label for strings configuration files
-
Jens Vagelpohl authored
-
- 26 Apr, 2021 2 commits
-
-
Dieter Maurer authored
let `lastTransaction` change only after invalidation processing
-
dieter authored
-
- 25 Apr, 2021 6 commits
-
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
Add automated tests against the ZODB master branch
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
- 24 Apr, 2021 7 commits
-
-
Jeremy Kolbe authored
-
Jeremy Kolbe authored
-
Jürgen Gmach authored
This fixes #142
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jürgen Gmach authored
-
Jens Vagelpohl authored
Switch from Travis CI to GitHub Actions for testing
-
- 23 Apr, 2021 8 commits
-
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jens Vagelpohl authored
-
Jürgen Gmach authored
-
dieter authored
-
dieter authored
-
- 20 Apr, 2021 2 commits
-
-
Kirill Smelkov authored
Currently loadBefore and prefetch spawn async protocol.load_before task, and, after waking up on its completion, populate the cache with received data. But in between the time when protocol.load_before handler is run and the time when protocol.load_before caller wakes up, there is a window in which event loop might be running some other code, including the code that handles invalidateTransaction messages from the server. This means that cache updates and cache invalidations can be processed on the client not in the order that server sent it. And such difference in the order can lead to data corruption if e.g server sent <- loadBefore oid serial=tid1 next_serial=None <- invalidateTransaction tid2 oid and client processed it as invalidateTransaction tid2 oid cache.store(oid, tid1, next_serial=None) because here the end effect is that invalidation for oid@tid2 is not applied to the cache. The fix is simple: perform cache updates right after loadBefore reply is received. Fixes: https://github.com/zopefoundation/ZEO/issues/155 The fix is based on analysis and initial patch by @jmuchemb: https://github.com/zopefoundation/ZEO/issues/155#issuecomment-581046248 A tests corresponding to the fix is coming coming through https://github.com/zopefoundation/ZEO/pull/170 and https://github.com/zopefoundation/ZODB/pull/345 For the reference, my original ZEO-specific data corruption reproducer is here: https://github.com/zopefoundation/ZEO/issues/155#issuecomment-577602842 https://lab.nexedi.com/kirr/wendelin.core/blob/ecd0e7f0/zloadrace5.py /cc @jamadden, @dataflake, @jimfulton /reviewed-by @jmuchemb, @d-maurer /reviewed-on https://github.com/zopefoundation/ZEO/pull/169
-
Kirill Smelkov authored
tests: Factor "Open another ClientStorage to the same server" into generic _new_storage_client() (#170) This allows ZODB tests to recognize ZEO as client-server storage and so make "load vs external invalidate" test added in https://github.com/zopefoundation/ZODB/pull/345 to reproduce data corruption problem reported at https://github.com/zopefoundation/ZEO/issues/155. For the reference: that problem should be fixed by https://github.com/zopefoundation/ZEO/pull/169. We drop # It's hard to find the actual address. # The rpc mgr addr attribute is a list. Each element in the # list is a socket domain (AF_INET, AF_UNIX, etc.) and an # address. note because at the time it was added (81f586c4) it came with addr = self._storage._rpc_mgr.addr[0][1] but nowdays after 03867188 getting to server address is just by ClientStorage._addr. /reviewed-on https://github.com/zopefoundation/ZEO/pull/170 /reviewed-by @d-maurer
-