[CalendarServer-changes] [4837] CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py

source_changes at macosforge.org source_changes at macosforge.org
Mon Dec 7 15:16:52 PST 2009


Revision: 4837
          http://trac.macosforge.org/projects/calendarserver/changeset/4837
Author:   wsanchez at apple.com
Date:     2009-12-07 15:16:52 -0800 (Mon, 07 Dec 2009)
Log Message:
-----------
Unroll some inlineCallbacks

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py

Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2009-12-07 23:05:30 UTC (rev 4836)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py	2009-12-07 23:16:52 UTC (rev 4837)
@@ -475,8 +475,8 @@
         remove_members = current_members.difference(update_members)
         add_members = update_members.difference(current_members)
         for member in itertools.chain(remove_members, add_members,):
-            _ignore = yield self._memcacher.deleteMembership(member)
-        _ignore = yield self._memcacher.deleteMember(principalUID)
+            yield self._memcacher.deleteMembership(member)
+        yield self._memcacher.deleteMember(principalUID)
 
     def setGroupMembersInDatabase(self, principalUID, members):
         """
@@ -534,13 +534,13 @@
 
             elif overdue is None:
                 # No timer was previously set
-                self.log_debug("Delaying removal of missing proxy principal '%s'" %
-                    (principalUID,))
+                self.log_debug("Delaying removal of missing proxy principal '%s'"
+                               % (principalUID,))
                 self._memcacher.setDeletionTimer(principalUID, delay=delay)
                 returnValue(None)
 
-        self.log_warn("Removing missing proxy principal for '%s'" %
-            (principalUID,))
+        self.log_warn("Removing missing proxy principal for '%s'"
+                      % (principalUID,))
 
         for suffix in ("calendar-proxy-read", "calendar-proxy-write",):
             groupUID = "%s#%s" % (principalUID, suffix,)
@@ -562,7 +562,6 @@
         self._db_commit()
         self._memcacher.clearDeletionTimer(principalUID)
 
-    @inlineCallbacks
     def getMembers(self, principalUID):
         """
         Return the list of group member UIDs for the specified principal.
@@ -571,15 +570,25 @@
         """
 
         def _members():
-            return set([row[0] for row in self._db_execute("select MEMBER from GROUPS where GROUPNAME = :1", principalUID)])
+            return set([
+                row[0] for row in
+                self._db_execute("select MEMBER from GROUPS where GROUPNAME = :1", principalUID)
+            ])
 
-        # Pull from cache
-        result = yield self._memcacher.getMembers(principalUID)
-        if result is None:
-            result = _members()
-            yield self._memcacher.setMembers(principalUID, result)
-        returnValue(result)
+        def gotCachedMembers(members):
+            if members is None:
+                # Cache miss; compute members and update cache
+                members = _members()
+                d = self._memcacher.setMembers(principalUID, members)
+                d.addCallback(lambda _: members)
+                return d
+            else:
+                return members
 
+        d = self._memcacher.getMembers(principalUID)
+        d.addCallback(gotCachedMembers)
+        return d
+
     @inlineCallbacks
     def getMemberships(self, principalUID):
         """
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20091207/98bbbab5/attachment.html>


More information about the calendarserver-changes mailing list