[CalendarServer-changes] [9321] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu May 31 16:06:57 PDT 2012


Revision: 9321
          http://trac.macosforge.org/projects/calendarserver/changeset/9321
Author:   glyph at apple.com
Date:     2012-05-31 16:06:57 -0700 (Thu, 31 May 2012)
Log Message:
-----------
slightly more permissive work-avoidance in the upgrade

Modified Paths:
--------------
    CalendarServer/trunk/txdav/common/datastore/sql.py

Property Changed:
----------------
    CalendarServer/trunk/

Modified: CalendarServer/trunk/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/common/datastore/sql.py	2012-05-31 22:50:07 UTC (rev 9320)
+++ CalendarServer/trunk/txdav/common/datastore/sql.py	2012-05-31 23:06:57 UTC (rev 9321)
@@ -4254,6 +4254,30 @@
 
 
 @inlineCallbacks
+def _needsNormalizationUpgrade(txn):
+    """
+    Determine whether a given store requires a UUID normalization data upgrade.
+
+    @param txn: the transaction to use
+    @type txn: L{CommonStoreTransaction}
+
+    @return: a L{Deferred} that fires with C{True} or C{False} depending on
+        whether we need the normalization upgrade or not.
+    """
+    for x in [schema.CALENDAR_HOME, schema.ADDRESSBOOK_HOME,
+              schema.NOTIFICATION_HOME]:
+        slct = Select([x.OWNER_UID], From=x,
+                      Where=x.OWNER_UID != Upper(x.OWNER_UID))
+        rows = yield slct.on(txn)
+        if rows:
+            for [uid] in rows:
+                if normalizeUUIDOrNot(uid) != uid:
+                    returnValue(True)
+    returnValue(False)
+
+
+
+ at inlineCallbacks
 def fixUUIDNormalization(store):
     """
     Fix all UUIDs in the given SQL store to be in a canonical form;
@@ -4261,18 +4285,11 @@
     """
     t = store.newTransaction(disableCache=True)
 
-    # First, let's see if there are any calendar or addressbook homes that have
-    # a lower-case OWNER_UID.  If there are none, then we can early-out and
-    # avoid the tedious and potentially expensive inspection of oodles of
-    # calendar data.
-    for x in [schema.CALENDAR_HOME, schema.ADDRESSBOOK_HOME,
-              schema.NOTIFICATION_HOME]:
-        slct = Select([x.OWNER_UID], From=x,
-                      Where=x.OWNER_UID != Upper(x.OWNER_UID))
-        rows = yield slct.on(t)
-        if rows:
-            break
-    else:
+    # First, let's see if there are any calendar, addressbook, or notification
+    # homes that have a de-normalized OWNER_UID.  If there are none, then we can
+    # early-out and avoid the tedious and potentially expensive inspection of
+    # oodles of calendar data.
+    if not (yield _needsNormalizationUpgrade(t)):
         log.msg("No potentially denormalized UUIDs detected, "
                 "skipping normalization upgrade.")
         yield t.abort()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120531/5bee971c/attachment.html>


More information about the calendarserver-changes mailing list