[CalendarServer-changes] [9723] CalendarServer/trunk/twistedcaldav/directory

source_changes at macosforge.org source_changes at macosforge.org
Fri Aug 17 10:09:13 PDT 2012


Revision: 9723
          http://trac.macosforge.org/projects/calendarserver/changeset/9723
Author:   sagen at apple.com
Date:     2012-08-17 10:09:13 -0700 (Fri, 17 Aug 2012)
Log Message:
-----------
Only call the groupsChanged( ) method on principals when we're not starting from scratch.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/directory.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py

Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py	2012-08-17 03:40:21 UTC (rev 9722)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py	2012-08-17 17:09:13 UTC (rev 9723)
@@ -727,10 +727,12 @@
             self.log_info("Group membership snapshot file does not yet exist")
             fast = False
             previousMembers = {}
+            callGroupsChanged = False
         else:
             self.log_info("Group membership snapshot file exists: %s" %
                 (snapshotFile.path,))
             previousMembers = pickle.loads(snapshotFile.getContent())
+            callGroupsChanged = True
 
         if useLock:
             self.log_info("Attempting to acquire group membership cache lock")
@@ -843,7 +845,7 @@
             changedMembers.add(member)
 
         # For principals whose group membership has changed, call groupsChanged()
-        if not fast and hasattr(self.directory, "principalCollection"):
+        if callGroupsChanged and not fast and hasattr(self.directory, "principalCollection"):
             for member in changedMembers:
                 record = yield self.directory.recordWithCachedGroupsAlias(
                     self.directory.recordType_users, member)
@@ -863,7 +865,7 @@
 
         self.log_info("Group memberships cache updated")
 
-        returnValue((fast, len(members)))
+        returnValue((fast, len(members), len(changedMembers)))
 
 
 

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py	2012-08-17 03:40:21 UTC (rev 9722)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py	2012-08-17 17:09:13 UTC (rev 9723)
@@ -281,7 +281,7 @@
 
         # Allow an update by unlocking the cache
         yield cache.releaseLock()
-        self.assertEquals((False, 8), (yield updater.updateCache()))
+        self.assertEquals((False, 8, 8), (yield updater.updateCache()))
 
         # Verify cache is populated:
         self.assertTrue((yield cache.isPopulated()))
@@ -370,7 +370,7 @@
         # that wsanchez is only a proxy for gemini (since that assignment does not involve groups)
         self.directoryService.xmlFile = dirTest.child("accounts-modified.xml")
         self.directoryService._alwaysStat = True
-        self.assertEquals((False, 7), (yield updater.updateCache()))
+        self.assertEquals((False, 7, 1), (yield updater.updateCache()))
         delegate = self._getPrincipalByShortName(DirectoryService.recordType_users, "wsanchez")
         proxyFor = (yield delegate.proxyFor(True))
         self.assertEquals(
@@ -510,9 +510,10 @@
         yield cache.acquireLock()
 
         self.assertFalse((yield cache.isPopulated()))
-        fast, numMembers = (yield updater.updateCache(fast=True))
+        fast, numMembers, numChanged = (yield updater.updateCache(fast=True))
         self.assertEquals(fast, False)
         self.assertEquals(numMembers, 8)
+        self.assertEquals(numChanged, 8)
         self.assertTrue(snapshotFile.exists())
         self.assertTrue((yield cache.isPopulated()))
 
@@ -528,9 +529,10 @@
         self.assertEquals(numMembers, 0)
 
         # Try an update which faults in from the directory (fast=False)
-        fast, numMembers = (yield updater.updateCache(fast=False))
+        fast, numMembers, numChanged = (yield updater.updateCache(fast=False))
         self.assertEquals(fast, False)
         self.assertEquals(numMembers, 8)
+        self.assertEquals(numChanged, 0)
 
         # Verify the snapshot contains the pickled dictionary we expect
         members = pickle.loads(snapshotFile.getContent())
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120817/106913f5/attachment-0001.html>


More information about the calendarserver-changes mailing list