[CalendarServer-changes] [8061] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Sep 13 11:22:21 PDT 2011
Revision: 8061
http://trac.macosforge.org/projects/calendarserver/changeset/8061
Author: sagen at apple.com
Date: 2011-09-13 11:22:20 -0700 (Tue, 13 Sep 2011)
Log Message:
-----------
Adds a configuration option for how long the group cacher sidecar should hold the update lock.
Modified Paths:
--------------
CalendarServer/trunk/conf/caldavd-test.plist
CalendarServer/trunk/twistedcaldav/directory/directory.py
CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py
CalendarServer/trunk/twistedcaldav/directory/principal.py
CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py
CalendarServer/trunk/twistedcaldav/stdconfig.py
CalendarServer/trunk/twistedcaldav/upgrade.py
Modified: CalendarServer/trunk/conf/caldavd-test.plist
===================================================================
--- CalendarServer/trunk/conf/caldavd-test.plist 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/conf/caldavd-test.plist 2011-09-13 18:22:20 UTC (rev 8061)
@@ -935,6 +935,8 @@
<integer>300</integer>
<key>ExpireSeconds</key>
<integer>3600</integer>
+ <key>LockSeconds</key>
+ <integer>300</integer>
<key>UseExternalProxies</key>
<false/>
</dict>
Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py 2011-09-13 18:22:20 UTC (rev 8061)
@@ -414,13 +414,14 @@
"""
def __init__(self, namespace, pickle=True, no_invalidation=False,
- key_normalization=True, expireSeconds=0):
+ key_normalization=True, expireSeconds=0, lockSeconds=60):
super(GroupMembershipCache, self).__init__(namespace, pickle=pickle,
no_invalidation=no_invalidation,
key_normalization=key_normalization)
self.expireSeconds = expireSeconds
+ self.lockSeconds = lockSeconds
def setGroupsFor(self, guid, memberships):
self.log_debug("set groups-for %s : %s" % (guid, memberships))
@@ -451,7 +452,7 @@
def acquireLock(self):
self.log_debug("add group-cacher-lock")
- return self.add("group-cacher-lock", "1", expireTime=self.expireSeconds)
+ return self.add("group-cacher-lock", "1", expireTime=self.lockSeconds)
def releaseLock(self):
self.log_debug("delete group-cacher-lock")
@@ -465,8 +466,9 @@
proxy database, and the location/resource info in the directory system.
"""
- def __init__(self, proxyDB, directory, expireSeconds, cache=None,
- namespace=None, useExternalProxies=False, externalProxiesSource=None):
+ def __init__(self, proxyDB, directory, expireSeconds, lockSeconds,
+ cache=None, namespace=None, useExternalProxies=False,
+ externalProxiesSource=None):
self.proxyDB = proxyDB
self.directory = directory
self.useExternalProxies = useExternalProxies
@@ -476,7 +478,8 @@
if cache is None:
assert namespace is not None, "namespace must be specified if GroupMembershipCache is not provided"
- cache = GroupMembershipCache(namespace, expireSeconds=expireSeconds)
+ cache = GroupMembershipCache(namespace, expireSeconds=expireSeconds,
+ lockSeconds=lockSeconds)
self.cache = cache
@@ -808,11 +811,15 @@
"""
def __init__(self, proxyDB, directory, namespace, updateSeconds,
- expireSeconds, reactor=None, updateMethod=None,
+ expireSeconds, lockSeconds, reactor=None, updateMethod=None,
useExternalProxies=False):
+ if updateSeconds >= expireSeconds:
+ expireSeconds = updateSeconds * 2
+ self.log_warn("Configuration warning: GroupCaching.ExpireSeconds needs to be longer than UpdateSeconds; setting to %d seconds" % (expireSeconds,))
+
self.updater = GroupMembershipCacheUpdater(proxyDB, directory,
- expireSeconds, namespace=namespace,
+ expireSeconds, lockSeconds, namespace=namespace,
useExternalProxies=useExternalProxies)
if reactor is None:
@@ -885,6 +892,7 @@
config.GroupCaching.MemcachedPool,
config.GroupCaching.UpdateSeconds,
config.GroupCaching.ExpireSeconds,
+ config.GroupCaching.LockSeconds,
useExternalProxies=config.GroupCaching.UseExternalProxies
)
Modified: CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py 2011-09-13 18:22:20 UTC (rev 8061)
@@ -570,8 +570,8 @@
shortNames = ()
authIDs = set()
fullName = None
- firstName = None
- lastName = None
+ firstName = ""
+ lastName = ""
emailAddresses = set()
enabledForCalendaring = None
enabledForAddressBooks = None
Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2011-09-13 18:22:20 UTC (rev 8061)
@@ -547,14 +547,14 @@
elif namespace == calendarserver_namespace:
if name == "first-name":
firstName = self.record.firstName
- if firstName:
+ if firstName is not None:
returnValue(customxml.FirstNameProperty(firstName))
else:
returnValue(None)
elif name == "last-name":
lastName = self.record.lastName
- if lastName:
+ if lastName is not None:
returnValue(customxml.LastNameProperty(lastName))
else:
returnValue(None)
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_directory.py 2011-09-13 18:22:20 UTC (rev 8061)
@@ -121,10 +121,17 @@
"""
clock = Clock()
self.count = 0
+
+ # Deliberately set the expireSeconds lower than updateSeconds to verify
+ # expireSeconds gets set to 2 * updateSeconds in that scenario
+
service = GroupMembershipCacherService(
- None, None, "Testing", 30, 60, reactor=clock,
+ None, None, "Testing", 30, 20, 30, reactor=clock,
updateMethod=self._updateMethod)
+ # expireSeconds = 2 * 30 updateSeconds
+ self.assertEquals(service.updater.cache.expireSeconds, 60)
+
yield service.startService()
self.assertEquals(self.count, 1)
@@ -190,7 +197,7 @@
self.directoryService.groupMembershipCache = cache
updater = GroupMembershipCacheUpdater(
- calendaruserproxy.ProxyDBService, self.directoryService, 30,
+ calendaruserproxy.ProxyDBService, self.directoryService, 30, 30,
cache=cache, useExternalProxies=False)
# Exercise getGroups()
@@ -375,7 +382,7 @@
]
updater = GroupMembershipCacheUpdater(
- calendaruserproxy.ProxyDBService, self.directoryService, 30,
+ calendaruserproxy.ProxyDBService, self.directoryService, 30, 30,
cache=cache, useExternalProxies=True,
externalProxiesSource=fakeExternalProxies)
@@ -461,7 +468,7 @@
self.directoryService.groupMembershipCache = cache
updater = GroupMembershipCacheUpdater(
- calendaruserproxy.ProxyDBService, self.directoryService, 30,
+ calendaruserproxy.ProxyDBService, self.directoryService, 30, 30,
cache=cache)
dataRoot = FilePath(config.DataRoot)
Modified: CalendarServer/trunk/twistedcaldav/stdconfig.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/stdconfig.py 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/twistedcaldav/stdconfig.py 2011-09-13 18:22:20 UTC (rev 8061)
@@ -783,6 +783,7 @@
"MemcachedPool" : "Default",
"UpdateSeconds" : 300,
"ExpireSeconds" : 3600,
+ "LockSeconds" : 300,
"EnableUpdater" : True,
"UseExternalProxies" : False,
},
Modified: CalendarServer/trunk/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/upgrade.py 2011-09-09 20:52:59 UTC (rev 8060)
+++ CalendarServer/trunk/twistedcaldav/upgrade.py 2011-09-13 18:22:20 UTC (rev 8061)
@@ -915,6 +915,7 @@
updater = GroupMembershipCacheUpdater(proxydb,
directory, self.config.GroupCaching.ExpireSeconds,
+ self.config.GroupCaching.LockSeconds,
namespace=self.config.GroupCaching.MemcachedPool,
useExternalProxies=self.config.GroupCaching.UseExternalProxies)
yield updater.updateCache(fast=True)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110913/edd62bc3/attachment-0001.html>
More information about the calendarserver-changes
mailing list