[Zodb-checkins] CVS: ZODB3 - NEWS.txt:

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
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 => ===
--- ZODB3/NEWS.txt:	Fri Feb 25 15:31:04 2005
+++ ZODB3/NEWS.txt	Mon Feb 28 16:20:40 2005
@@ -31,6 +31,18 @@
+- 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