[Zope-Checkins] SVN: Zope/trunk/ During startup open a connection to every configured database, to ensure all of them can indeed be accessed. This avoids surprises during runtime when traversal to some database mountpoint could fail as the underlying storage cannot be opened at all.
Hanno Schlichting
hannosch at hannosch.eu
Sun Jul 3 09:07:09 EDT 2011
Log message for revision 122073:
During startup open a connection to every configured database, to ensure all of them can indeed be accessed. This avoids surprises during runtime when traversal to some database mountpoint could fail as the underlying storage cannot be opened at all.
Changed:
U Zope/trunk/doc/CHANGES.rst
U Zope/trunk/src/Zope2/App/startup.py
-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst 2011-07-03 12:45:58 UTC (rev 122072)
+++ Zope/trunk/doc/CHANGES.rst 2011-07-03 13:07:09 UTC (rev 122073)
@@ -16,6 +16,11 @@
Features Added
++++++++++++++
+- During startup open a connection to every configured database, to ensure all
+ of them can indeed be accessed. This avoids surprises during runtime when
+ traversal to some database mountpoint could fail as the underlying storage
+ cannot be opened at all.
+
- Explicitly close all databases on shutdown, which ensures `Data.fs.index`
gets written to the file system.
Modified: Zope/trunk/src/Zope2/App/startup.py
===================================================================
--- Zope/trunk/src/Zope2/App/startup.py 2011-07-03 12:45:58 UTC (rev 122072)
+++ Zope/trunk/src/Zope2/App/startup.py 2011-07-03 13:07:09 UTC (rev 122073)
@@ -93,6 +93,17 @@
else:
DB = ZODB.DB(m.Storage, databases=databases)
+ # Force a connection to every configured database, to ensure all of them
+ # can indeed be opened. This avoids surprises during runtime when traversal
+ # to some database mountpoint fails as the underlying storage cannot be
+ # opened at all
+ for mount, name in dbtab.listMountPaths():
+ _db = dbtab.getDatabase(mount)
+ _conn = _db.open()
+ _conn.close()
+ del _conn
+ del _db
+
notify(DatabaseOpened(DB))
Globals.BobobaseName = DB.getName()
More information about the Zope-Checkins
mailing list