[CalendarServer-changes] [9136] CalendarServer/trunk/txdav
source_changes at macosforge.org
source_changes at macosforge.org
Mon Apr 16 16:20:48 PDT 2012
Revision: 9136
http://trac.macosforge.org/projects/calendarserver/changeset/9136
Author: sagen at apple.com
Date: 2012-04-16 16:20:48 -0700 (Mon, 16 Apr 2012)
Log Message:
-----------
Use memcached for the home metadata query
Modified Paths:
--------------
CalendarServer/trunk/txdav/base/datastore/util.py
CalendarServer/trunk/txdav/common/datastore/sql.py
Modified: CalendarServer/trunk/txdav/base/datastore/util.py
===================================================================
--- CalendarServer/trunk/txdav/base/datastore/util.py 2012-04-16 23:19:34 UTC (rev 9135)
+++ CalendarServer/trunk/txdav/base/datastore/util.py 2012-04-16 23:20:48 UTC (rev 9136)
@@ -61,6 +61,8 @@
def set(self, key, value):
super(QueryCacher, self).set(key, value, expireTime=self.cacheExpireSeconds)
+ # Home child objects by name
+
def keyForObjectWithName(self, homeResourceID, name):
return "objectWithName:%s:%s" % (homeResourceID, name)
@@ -78,3 +80,22 @@
# within the same transaction
self.delete(key)
transaction.postCommit(lambda:self.delete(key))
+
+ # Home metadata (Created/Modified)
+
+ def keyForHomeMetaData(self, homeResourceID):
+ return "homeMetaData:%s" % (homeResourceID)
+
+ def getHomeMetaData(self, homeResourceID):
+ key = self.keyForHomeMetaData(homeResourceID)
+ return self.get(key)
+
+ def setHomeMetaData(self, transaction, homeResourceID, value):
+ key = self.keyForHomeMetaData(homeResourceID)
+ transaction.postCommit(lambda:self.set(key, value))
+
+ def invalidateHomeMetaData(self, transaction, homeResourceID):
+ key = self.keyForHomeMetaData(homeResourceID)
+ # Invalidate immediately and post-commit
+ self.delete(key)
+ transaction.postCommit(lambda:self.delete(key))
Modified: CalendarServer/trunk/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/common/datastore/sql.py 2012-04-16 23:19:34 UTC (rev 9135)
+++ CalendarServer/trunk/txdav/common/datastore/sql.py 2012-04-16 23:20:48 UTC (rev 9136)
@@ -884,8 +884,16 @@
if result:
self._resourceID = result[0][0]
- self._created, self._modified = (yield self._metaDataQuery.on(
- self._txn, resourceID=self._resourceID))[0]
+ queryCacher = self._txn.store().queryCacher
+ if queryCacher:
+ data = yield queryCacher.getHomeMetaData(self._resourceID)
+ if data is not None:
+ self._created, self._modified = data
+ else:
+ self._created, self._modified = (yield self._metaDataQuery.on(
+ self._txn, resourceID=self._resourceID))[0]
+ yield queryCacher.setHomeMetaData(self._txn, self._resourceID,
+ (self._created, self._modified))
yield self._loadPropertyStore()
returnValue(self)
else:
@@ -1442,6 +1450,10 @@
try:
self._modified = (yield self._txn.subtransaction(_bumpModified, retries=0, failureOK=True))[0][0]
+ queryCacher = self._txn.store().queryCacher
+ if queryCacher is not None:
+ yield queryCacher.invalidateHomeMetaData(self._txn, self._resourceID)
+
except AllRetriesFailed:
log.debug("CommonHome.bumpModified failed")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120416/b7d943cd/attachment-0001.html>
More information about the calendarserver-changes
mailing list