[CalendarServer-changes] [6534] CalendarServer/branches/users/glyph/sharedpool/txdav/base/datastore/ asyncsqlpool.py
source_changes at macosforge.org
source_changes at macosforge.org
Mon Nov 1 14:26:30 PDT 2010
Revision: 6534
http://trac.macosforge.org/projects/calendarserver/changeset/6534
Author: glyph at apple.com
Date: 2010-11-01 14:26:27 -0700 (Mon, 01 Nov 2010)
Log Message:
-----------
normalize completion-checking
Modified Paths:
--------------
CalendarServer/branches/users/glyph/sharedpool/txdav/base/datastore/asyncsqlpool.py
Modified: CalendarServer/branches/users/glyph/sharedpool/txdav/base/datastore/asyncsqlpool.py
===================================================================
--- CalendarServer/branches/users/glyph/sharedpool/txdav/base/datastore/asyncsqlpool.py 2010-11-01 21:26:03 UTC (rev 6533)
+++ CalendarServer/branches/users/glyph/sharedpool/txdav/base/datastore/asyncsqlpool.py 2010-11-01 21:26:27 UTC (rev 6534)
@@ -20,6 +20,7 @@
"""
import sys
+
from cStringIO import StringIO
from cPickle import dumps, loads
from itertools import count
@@ -148,9 +149,12 @@
Release the thread and database connection associated with this
transaction.
"""
+ self._completed = True
self._stopped = True
- self._holder.submit(self._connection.close)
- return self._holder.stop()
+ holder = self._holder
+ self._holder = None
+ holder.submit(self._connection.close)
+ return holder.stop()
@@ -170,23 +174,34 @@
def execSQL(self, *a, **kw):
- if self._complete:
- raise AlreadyFinishedError()
+ self._checkComplete()
return super(PooledSqlTxn, self).execSQL(*a, **kw)
def commit(self):
- if self._complete:
- raise AlreadyFinishedError()
- self._complete = True
+ self._markComplete()
return self._repoolAfter(super(PooledSqlTxn, self).commit())
def abort(self):
+ self._markComplete()
+ return self._repoolAfter(super(PooledSqlTxn, self).abort())
+
+
+ def _checkComplete(self):
+ """
+ If the transaction is complete, raise L{AlreadyFinishedError}
+ """
if self._complete:
raise AlreadyFinishedError()
+
+
+ def _markComplete(self):
+ """
+ Mark the transaction as complete, raising AlreadyFinishedError.
+ """
+ self._checkComplete()
self._complete = True
- return self._repoolAfter(super(PooledSqlTxn, self).abort())
def _repoolAfter(self, d):
@@ -234,7 +249,7 @@
yield free.stop()
- def connection(self):
+ def connection(self, label="<unlabeled>"):
"""
Find a transaction; either retrieve a free one from the list or
allocate a new one if no free ones are available.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20101101/2e67609a/attachment-0001.html>
More information about the calendarserver-changes
mailing list