[CalendarServer-changes] [11841] CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades
source_changes at macosforge.org
source_changes at macosforge.org
Wed Mar 12 11:20:57 PDT 2014
Revision: 11841
http://trac.calendarserver.org//changeset/11841
Author: cdaboo at apple.com
Date: 2013-10-28 17:53:43 -0700 (Mon, 28 Oct 2013)
Log Message:
-----------
Fix issue with upgrade when default calendar URL points to wrong calendar type.
Modified Paths:
--------------
CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/calendar_upgrade_from_3_to_4.py
CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/test/test_upgrade_from_3_to_4.py
Modified: CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/calendar_upgrade_from_3_to_4.py
===================================================================
--- CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/calendar_upgrade_from_3_to_4.py 2013-10-29 00:05:11 UTC (rev 11840)
+++ CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/calendar_upgrade_from_3_to_4.py 2013-10-29 00:53:43 UTC (rev 11841)
@@ -22,6 +22,7 @@
from twistedcaldav import caldavxml, customxml
from txdav.base.propertystore.base import PropertyName
+from txdav.caldav.icalendarstore import InvalidDefaultCalendar
from txdav.common.datastore.sql_tables import schema, _BIND_MODE_OWN
from txdav.common.datastore.upgrade.sql.upgrades.util import rowsForProperty, updateCalendarDataVersion, \
updateAllCalendarHomeDataVersions, removeProperty, cleanPropertyStore
@@ -109,9 +110,13 @@
calendar = (yield calendarHome.calendarWithName(calendarName))
if calendar is not None:
- yield calendarHome.setDefaultCalendar(
- calendar, tasks=(propname == customxml.ScheduleDefaultTasksURL)
- )
+ try:
+ yield calendarHome.setDefaultCalendar(
+ calendar, tasks=(propname == customxml.ScheduleDefaultTasksURL)
+ )
+ except InvalidDefaultCalendar:
+ # Ignore these - the server will recover
+ pass
# Always delete the rows so that batch processing works correctly
yield Delete(
Modified: CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/test/test_upgrade_from_3_to_4.py
===================================================================
--- CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/test/test_upgrade_from_3_to_4.py 2013-10-29 00:05:11 UTC (rev 11840)
+++ CalendarServer/trunk/txdav/common/datastore/upgrade/sql/upgrades/test/test_upgrade_from_3_to_4.py 2013-10-29 00:53:43 UTC (rev 11841)
@@ -74,6 +74,47 @@
@inlineCallbacks
+ def test_invalidDefaultCalendarUpgrade(self):
+
+ # Set dead property on inbox
+ for user in ("user01", "user02",):
+ inbox = (yield self.calendarUnderTest(name="inbox", home=user))
+ inbox.properties()[PropertyName.fromElement(ScheduleDefaultCalendarURL)] = ScheduleDefaultCalendarURL(HRef.fromString("/calendars/__uids__/%s/tasks_1" % (user,)))
+
+ # Force current default to null
+ home = (yield self.homeUnderTest(name=user))
+ chm = home._homeMetaDataSchema
+ yield Update(
+ {chm.DEFAULT_EVENTS: None},
+ Where=chm.RESOURCE_ID == home._resourceID,
+ ).on(self.transactionUnderTest())
+
+ # Create tasks only calendar
+ tasks = (yield home.createCalendarWithName("tasks_1"))
+ yield tasks.setSupportedComponents("VTODO")
+
+ # Force data version to previous
+ ch = home._homeSchema
+ yield Update(
+ {ch.DATAVERSION: 3},
+ Where=ch.RESOURCE_ID == home._resourceID,
+ ).on(self.transactionUnderTest())
+
+ yield self.commit()
+
+ # Trigger upgrade
+ yield moveDefaultCalendarProperties(self._sqlCalendarStore)
+
+ # Test results
+ for user in ("user01", "user02",):
+ home = (yield self.homeUnderTest(name=user))
+ calendar = (yield self.calendarUnderTest(name="tasks_1", home=user))
+ self.assertFalse(home.isDefaultCalendar(calendar))
+ inbox = (yield self.calendarUnderTest(name="inbox", home=user))
+ self.assertTrue(PropertyName.fromElement(ScheduleDefaultCalendarURL) not in inbox.properties())
+
+
+ @inlineCallbacks
def test_calendarTranspUpgrade(self):
# Set dead property on inbox
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/5ec99f0c/attachment.html>
More information about the calendarserver-changes
mailing list