[Zodb-checkins] CVS: ZODB3 - NEWS.txt:1.33.6.66
Tim Peters
tim.one at comcast.net
Mon Feb 28 16:21:11 EST 2005
Update of /cvs-repository/ZODB3
In directory cvs.zope.org:/tmp/cvs-serv8391
Modified Files:
Tag: Zope-2_7-branch
NEWS.txt
Log Message:
Change FileStorage .restore() and .store() to update max oid in use.
This is the last of the checkins to fix critical bugs involving rare cases
where a FileStorage could end up reusing old oids for new objects.
=== ZODB3/NEWS.txt 1.33.6.65 => 1.33.6.66 ===
--- ZODB3/NEWS.txt:1.33.6.65 Fri Feb 25 15:31:04 2005
+++ ZODB3/NEWS.txt Mon Feb 28 16:20:40 2005
@@ -31,6 +31,18 @@
FileStorage
-----------
+- The ``.store()`` and ``.restore()`` methods didn't update the storage's
+ belief about the largest oid in use when passed an oid larger than the
+ largest oid the storage already knew about. Because ``.restore()`` in
+ particular is used by ``copyTransactionsFrom()``, and by the first stage
+ of ZRS recovery, a large database could be created that believed the only
+ oid in use was oid 0 (the special oid reserved for the root object). In
+ rare cases, it could go on from there assigning duplicate oids to new
+ objects, starting over from oid 1 again. This has been repaired. A
+ new ``set_max_oid()`` method was added to the ``BaseStorage`` class so
+ that derived storages can update the largest oid in use in a threadsafe
+ way.
+
- A FileStorage's index file tried to maintain the index's largest oid as a
separate piece of data, incrementally updated over the storage's lifetime.
This scheme was more complicated than necessary, so was also more brittle
More information about the Zodb-checkins
mailing list