[Zodb-checkins] SVN: ZODB/trunk/ Add the ZEO (in)compatibility
story.
Tim Peters
tim.one at comcast.net
Fri Apr 1 16:03:13 EST 2005
Log message for revision 29802:
Add the ZEO (in)compatibility story.
Changed:
U ZODB/trunk/NEWS.txt
U ZODB/trunk/README.txt
-=-
Modified: ZODB/trunk/NEWS.txt
===================================================================
--- ZODB/trunk/NEWS.txt 2005-04-01 20:50:11 UTC (rev 29801)
+++ ZODB/trunk/NEWS.txt 2005-04-01 21:03:11 UTC (rev 29802)
@@ -52,6 +52,17 @@
file ZODB/tests/multidb.txt for a tutorial doctest. Thanks to Christian
Theune for his work on this during the PyCon 2005 ZODB sprint.
+ZEO compatibility
+-----------------
+
+There are severe restrictions on using ZEO servers and clients at or after
+ZODB 3.3 with ZEO servers and clients from ZODB versions before 3.3. See the
+reworked ``Compatibility`` section in ``README.txt`` for details. If
+possible, it will be easiest to move clients and servers to 3.3+
+simultaneously. With care, it's possible to use a 3.3+ ZEO server with
+pre-3.3 ZEO clients, but not possible to use a pre-3.3 ZEO server with 3.3+
+ZEO clients.
+
BTrees
------
Modified: ZODB/trunk/README.txt
===================================================================
--- ZODB/trunk/README.txt 2005-04-01 20:50:11 UTC (rev 29801)
+++ ZODB/trunk/README.txt 2005-04-01 21:03:11 UTC (rev 29802)
@@ -31,15 +31,37 @@
ZODB 3.4 requires Python 2.3.4 or later. For best results, we recommend
Python 2.3.5.
-The Zope 2.8 and X3 releases should be compatible with this version of ZODB.
-Note that Zope 2.7 and higher includes ZEO, so this package should only be
-needed to run a ZEO server.
+The Zope 2.8 release, and Zope3 releases, should be compatible with this
+version of ZODB. Note that Zope 2.7 and higher includes ZEO, so this package
+should only be needed to run a ZEO server.
-The ZEO server in ZODB 3.4 is currently incompatible with earlier
-versions of ZODB. If you want to test the software, you must be
-running this release for both client and server. A backwards
-compatibility mechanism will be provided in a later release.
+ZEO servers and clients are wholly compatible among 3.3, 3.3.1 and 3.4: a ZEO
+client from any of those versions can talk with a ZEO server from any.
+Trying to mix ZEO clients and servers from 3.3 or later from ZODB releases
+before 3.3 is much harder. ZODB 3.3 introduced multiversion concurrency
+control (MVCC), and earlier ZEO servers do not support MVCC: a 3.3+ ZEO
+client cannot talk with an older ZEO server as a result.
+
+In the other direction, a 3.3+ ZEO server can talk with older ZEO clients,
+but because the names of some basic classes have changed, if any 3.3+ clients
+commit modifications to the database it's likely that the database will
+contain instances of classes that don't exist in (can't be loaded by) older
+ZEO clients. For example, the database root object was an instance of
+``ZODB.PersistentMapping.PersistentMapping`` before ZODB 3.3, but is an
+instance of ``persistent.mapping.PersistentMapping`` in ZODB 3.3. A 3.3.1+
+client can still load a ``ZODB.PersistentMapping.PersistentMapping`` object,
+but this is just an alias for ``persistent.mapping.PersistentMapping``, and
+an object of the latter type will be stored if a 3.3 client commits a change
+to the root object. An older ZEO client cannot load the root object so
+changed.
+
+This limits migration possibilities: a 3.3+ ZEO server can be used with
+older (pre-3.3) ZEO clients and serve an older database, so long as no 3.3+
+ZEO clients commit changes to the database. The most practical upgrade path
+is to bring up both servers and clients using 3.3+, not trying to mix pre-3.3
+and post-3.3 ZEO clients and servers.
+
Prerequisites
-------------
More information about the Zodb-checkins
mailing list