- 05 Jul, 2021 2 commits
-
-
Kirill Smelkov authored
Make sure that loadBefore actually uses ._conflict_cache data
-
Kirill Smelkov authored
TemporaryStorage uses ._index {} oid -> serial ._opickle {} oid -> data as data store for load. However for loadBefore ._conflict_cache {} (oid,serial) -> (data, time) is reused as data store. That would be ok if that place would be treated as data store, but given its primary purpose - as its name suggests - was originally to be a cache to resolve conflicts, it is "logical" that entries in this cache are garbage-collected when entry age becomes > gc threshold. Only now there is a problem: if an object is committed once, and time passes, corresponding entry in ._conflict_cache will be removed. And this would manifest itself as - load(oid) -> gives latest data for the object (obtained via ._index and ._opickle) but - loadBefore(oid, @head) -> gives POSKeyError -> Fix it by always preserving latest object revision in ._conflict_cache from being removed on GC. The fix is important for systems that use ZODB5, or ZODB4-wc2[1] because there ZODB.Connection switched from primarily using load to exclusively using loadBefore. /cc @icemac @mauritsvanrees @mgedmin @d-maurer @dwt @hannosch Fixes: https://github.com/zopefoundation/tempstorage/issues/8 [1] nexedi/ZODB@8e7eab33
-
- 02 Jul, 2021 3 commits
-
-
Roel Bruggink authored
This prevents a KeyError: '\x00\x00\x00\x00\x00\x00\x00\x00'
-
Jim Fulton authored
I guess there were no tests of GC.
-
Jim Fulton authored
That was made effective by recent changes in ZODB that relied more on loadBefore for MVCC. Oddly the change makes this loadBefore match the version it was copied from, which github says was last changed 13 years ago. (gulp, on multiple levels).
-
- 03 Apr, 2016 2 commits
-
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
- 20 Dec, 2014 2 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
-
- 18 Dec, 2014 1 commit
-
- 06 Nov, 2014 1 commit
-
-
Marius Gedminas authored
Downloaded from http://downloads.buildout.org/2/bootstrap.py
-
- 18 Mar, 2014 2 commits
-
-
Tres Seaver authored
Python 3 compatibility
-
Tom Gross authored
-
- 17 Mar, 2014 5 commits
- 13 Mar, 2013 1 commit
-
-
Stephan Richter authored
-
- 12 Mar, 2013 1 commit
-
-
Marius Gedminas authored
-
- 26 Feb, 2013 1 commit
-
-
Hanno Schlichting authored
-
- 14 Oct, 2012 4 commits
-
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
- 29 Sep, 2010 3 commits
-
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
- 25 Sep, 2010 7 commits
-
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
- 05 Jun, 2010 2 commits
-
-
Hanno Schlichting authored
-
Hanno Schlichting authored
-
- 02 May, 2010 3 commits
-
-
Tres Seaver authored
-
Tres Seaver authored
Make the local tests use "normal" unittest conventions.
-
Tres Seaver authored
-