[CalendarServer-changes] [9732] CalendarServer/trunk/twistedcaldav/database.py
source_changes at macosforge.org
source_changes at macosforge.org
Mon Aug 20 11:21:08 PDT 2012
Revision: 9732
http://trac.macosforge.org/projects/calendarserver/changeset/9732
Author: sagen at apple.com
Date: 2012-08-20 11:21:06 -0700 (Mon, 20 Aug 2012)
Log Message:
-----------
Clean up the connection pool if there is an error during open()
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/database.py
Modified: CalendarServer/trunk/twistedcaldav/database.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/database.py 2012-08-20 16:56:53 UTC (rev 9731)
+++ CalendarServer/trunk/twistedcaldav/database.py 2012-08-20 18:21:06 UTC (rev 9732)
@@ -107,31 +107,37 @@
#
# Create CALDAV table if needed
- test = (yield self._test_schema_table())
- if test:
- version = (yield self._db_value_for_sql("select VALUE from CALDAV where KEY = 'SCHEMA_VERSION'"))
- dbtype = (yield self._db_value_for_sql("select VALUE from CALDAV where KEY = 'TYPE'"))
+ try:
+ test = (yield self._test_schema_table())
+ if test:
+ version = (yield self._db_value_for_sql("select VALUE from CALDAV where KEY = 'SCHEMA_VERSION'"))
+ dbtype = (yield self._db_value_for_sql("select VALUE from CALDAV where KEY = 'TYPE'"))
- if (version != self._db_version()) or (dbtype != self._db_type()):
+ if (version != self._db_version()) or (dbtype != self._db_type()):
- if dbtype != self._db_type():
- log.err("Database %s has different type (%s vs. %s)"
- % (self.dbID, dbtype, self._db_type()))
+ if dbtype != self._db_type():
+ log.err("Database %s has different type (%s vs. %s)"
+ % (self.dbID, dbtype, self._db_type()))
- # Delete this index and start over
- yield self._db_remove()
- yield self._db_init()
+ # Delete this index and start over
+ yield self._db_remove()
+ yield self._db_init()
- elif version != self._db_version():
- log.err("Database %s has different schema (v.%s vs. v.%s)"
- % (self.dbID, version, self._db_version()))
-
- # Upgrade the DB
- yield self._db_upgrade(version)
+ elif version != self._db_version():
+ log.err("Database %s has different schema (v.%s vs. v.%s)"
+ % (self.dbID, version, self._db_version()))
+
+ # Upgrade the DB
+ yield self._db_upgrade(version)
- else:
- yield self._db_init()
- self.initialized = True
+ else:
+ yield self._db_init()
+ self.initialized = True
+ except:
+ # Clean up upon error so we don't end up leaking threads
+ self.pool.close()
+ self.pool = None
+ raise
def close(self):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120820/554e1624/attachment-0001.html>
More information about the calendarserver-changes
mailing list