Shane Hathaway wrote:
Tim Peters wrote:

   http://www.zope.org/Collectors/Zope/1800

describes some of the code problems with Zope's current way of mounting
databases.  ZODB 3.4 (still) has a Mount.py module, unused and untested by
ZODB.  Jim and I were both surprised today to discover that Zope (2.8) still
imports it, so we can't drop it for ZODB 3.4 (Zope 2.8, and the ZODB 3.4 it
uses, are both in beta).

We'd like to continue getting non-ZODB code out of the ZODB project, so
would like to drop Mount.py from ZODB 3.5.  Are any of zodb-dev's
"standalone" ZODB users making use of Mount.py?  I would be surprised by
that too, since Mount.py relies on other code (like Acquisition) that's
already been removed from the ZODB 3.3 and 3.4 lines.  I've been surprised
before, though ...


ZODB/Mount.py is dangerous.  In the past few years, Jim and I have
discovered necessary constraints on mounted databases, and
ZODB/Mount.py has not been updated to reflect that thinking.  The main
problem is that ZODB/Mount.py does not bind each mounted connection with
a specific root database connection; instead, mounted connections are
free to be used with any root database connection.  The result is that
_v_ attributes that cross mount boundaries turn insane.

I solved the connection binding problem when I wrote the DBTab product,
but the solution required an ugly monkey patch.  Later, DBTab got folded
into Zope, but not the way I expected.  By the time I saw the
integration, it was the wrong time to fix it.  (I don't blame anyone for
this mistake; DBTab was complex and I didn't explain well enough how it
worked.)

So now there's a mess to clean up.  I suggest:

1. Products/TemporaryFolder is the only code in Zope that uses
ZODB/Mount.py.  Before the Zope 2.8.0 release, put a copy of
ZODB/Mount.py in Products/TemporaryFolder and change the import
statement to import that copy instead.

I assume we are too late to affect 2.8.

2. With the last Zope reference gone, remove ZODB/Mount.py from ZODB
3.3, 3.4, and 3.5.  If standalone ZODB authors really depend on it, they
can get their own copy and change their own import statements.

3. Update Products/ZODBMountPoint/Mount.py to use whatever method ZODB
3.5 wants to use for mounting databases, removing the ugly
ConnectionPatches.
>
4. Change TemporaryFolder to use Products/ZODBMountPoint/Mount.py and
finally remove Products/TemporaryFolder/Mount.py.

Yup, but I think this needs to be a project for Zope 2.9.

Jim

--
Jim Fulton           mailto:[EMAIL PROTECTED]       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )

Reply via email to