[CalendarServer-changes] [6002] CalendarServer/branches/users/wsanchez/deployment/twistedcaldav/ database.py
source_changes at macosforge.org
source_changes at macosforge.org
Fri Aug 6 12:44:20 PDT 2010
Revision: 6002
http://trac.macosforge.org/projects/calendarserver/changeset/6002
Author: cdaboo at apple.com
Date: 2010-08-06 12:44:20 -0700 (Fri, 06 Aug 2010)
Log Message:
-----------
Re-try DB query one time as a pooled connection may have gone away.
Modified Paths:
--------------
CalendarServer/branches/users/wsanchez/deployment/twistedcaldav/database.py
Modified: CalendarServer/branches/users/wsanchez/deployment/twistedcaldav/database.py
===================================================================
--- CalendarServer/branches/users/wsanchez/deployment/twistedcaldav/database.py 2010-08-06 19:42:24 UTC (rev 6001)
+++ CalendarServer/branches/users/wsanchez/deployment/twistedcaldav/database.py 2010-08-06 19:44:20 UTC (rev 6002)
@@ -134,59 +134,113 @@
def close(self):
if self.initialized:
- self.pool.close()
+ try:
+ self.pool.close()
+ except Exception, e:
+ log.err("Error whilst closing connection pool: %s" % (e,))
self.pool = None
self.initialized = False
@inlineCallbacks
def clean(self):
- if not self.initialized:
- yield self.open()
+ # Re-try at least once
+ for _ignore in (0, 1):
+ if not self.initialized:
+ yield self.open()
- yield self._db_empty_data_tables()
+ try:
+ yield self._db_empty_data_tables()
+ except Exception, e:
+ log.err("Error in database clean: %s" % (e,))
+ self.close()
+ else:
+ break
@inlineCallbacks
def execute(self, sql, *query_params):
- if not self.initialized:
- yield self.open()
+ # Re-try at least once
+ for _ignore in (0, 1):
+ if not self.initialized:
+ yield self.open()
+
+ try:
+ yield self._db_execute(sql, *query_params)
+ except Exception, e:
+ log.err("Error in database execute: %s" % (e,))
+ self.close()
+ else:
+ break
- yield self._db_execute(sql, *query_params)
-
@inlineCallbacks
def executescript(self, script):
- if not self.initialized:
- yield self.open()
+ # Re-try at least once
+ for _ignore in (0, 1):
+ if not self.initialized:
+ yield self.open()
+
+ try:
+ yield self._db_execute_script(script)
+ except Exception, e:
+ log.err("Error in database executescript: %s" % (e,))
+ self.close()
+ else:
+ break
- yield self._db_execute_script(script)
-
@inlineCallbacks
def query(self, sql, *query_params):
- if not self.initialized:
- yield self.open()
+ # Re-try at least once
+ for _ignore in (0, 1):
+ if not self.initialized:
+ yield self.open()
+
+ try:
+ result = (yield self._db_all_values_for_sql(sql, *query_params))
+ except Exception, e:
+ log.err("Error in database query: %s" % (e,))
+ self.close()
+ else:
+ break
- result = (yield self._db_all_values_for_sql(sql, *query_params))
returnValue(result)
@inlineCallbacks
def queryList(self, sql, *query_params):
- if not self.initialized:
- yield self.open()
+ # Re-try at least once
+ for _ignore in (0, 1):
+ if not self.initialized:
+ yield self.open()
+
+ try:
+ result = (yield self._db_values_for_sql(sql, *query_params))
+ except Exception, e:
+ log.err("Error in database queryList: %s" % (e,))
+ self.close()
+ else:
+ break
- result = (yield self._db_values_for_sql(sql, *query_params))
returnValue(result)
@inlineCallbacks
def queryOne(self, sql, *query_params):
- if not self.initialized:
- yield self.open()
+ # Re-try at least once
+ for _ignore in (0, 1):
+ if not self.initialized:
+ yield self.open()
+
+ try:
+ result = (yield self._db_value_for_sql(sql, *query_params))
+ except Exception, e:
+ log.err("Error in database queryOne: %s" % (e,))
+ self.close()
+ else:
+ break
- result = (yield self._db_value_for_sql(sql, *query_params))
returnValue(result)
def _db_version(self):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100806/07dc35b6/attachment.html>
More information about the calendarserver-changes
mailing list