[CalendarServer-changes] [15708] CalendarServer/trunk/txdav/caldav/datastore
source_changes at macosforge.org
source_changes at macosforge.org
Sat Jun 25 07:47:22 PDT 2016
Revision: 15708
http://trac.calendarserver.org//changeset/15708
Author: cdaboo at apple.com
Date: 2016-06-25 07:47:22 -0700 (Sat, 25 Jun 2016)
Log Message:
-----------
Fix race condition where a resource is removed whilst doing a large split operation.
Modified Paths:
--------------
CalendarServer/trunk/txdav/caldav/datastore/sql.py
CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py
Modified: CalendarServer/trunk/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/sql.py 2016-06-25 14:26:18 UTC (rev 15707)
+++ CalendarServer/trunk/txdav/caldav/datastore/sql.py 2016-06-25 14:47:22 UTC (rev 15708)
@@ -5396,7 +5396,7 @@
# Split each one - but not this resource
for resource in resources:
- if resource._resourceID == self._resourceID:
+ if resource is None or resource._resourceID == self._resourceID:
continue
yield resource.splitForAttendee(
rid,
Modified: CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py 2016-06-25 14:26:18 UTC (rev 15707)
+++ CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py 2016-06-25 14:47:22 UTC (rev 15708)
@@ -7400,6 +7400,7 @@
DURATION:PT2H
ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
ATTENDEE:mailto:user02 at example.com
+ATTENDEE:mailto:user03 at example.com
DTSTAMP:20051222T210507Z
ORGANIZER:mailto:user01 at example.com
RRULE:FREQ=DAILY
@@ -7415,6 +7416,7 @@
DURATION:PT1H
ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
ATTENDEE:mailto:user02 at example.com
+ATTENDEE:mailto:user03 at example.com
DTSTAMP:20051222T210507Z
ORGANIZER:mailto:user01 at example.com
END:VEVENT
@@ -7425,6 +7427,7 @@
DURATION:PT1H
ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
ATTENDEE:mailto:user02 at example.com
+ATTENDEE:mailto:user03 at example.com
DTSTAMP:20051222T210507Z
ORGANIZER:mailto:user01 at example.com
END:VEVENT
@@ -7435,6 +7438,7 @@
DURATION:PT1H
ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
ATTENDEE:mailto:user02 at example.com
+ATTENDEE:mailto:user03 at example.com
DTSTAMP:20051222T210507Z
ORGANIZER:mailto:user01 at example.com
END:VEVENT
@@ -7450,6 +7454,7 @@
DURATION:PT2H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7467,6 +7472,7 @@
DURATION:PT1H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7484,6 +7490,7 @@
DURATION:PT2H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7501,6 +7508,7 @@
DURATION:PT1H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7513,6 +7521,7 @@
DURATION:PT1H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7530,6 +7539,7 @@
DURATION:PT2H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7547,6 +7557,7 @@
DURATION:PT1H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7571,6 +7582,7 @@
DURATION:PT2H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7588,6 +7600,7 @@
DURATION:PT1H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7600,6 +7613,7 @@
DURATION:PT1H
ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+ATTENDEE;CN=User 03;EMAIL=user03 at example.com;RSVP=TRUE:urn:x-uid:user03
DTSTAMP:20051222T210507Z
ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
@@ -7636,6 +7650,16 @@
yield cobjs[0].remove()
yield newtxn.commit()
+ # Remove inbox item in another txn
+ newtxn = self.concurrentTransaction()
+ cal = yield self.calendarUnderTest(name="inbox", home="user03")
+ cobjs = yield cal.calendarObjects()
+ for ctr in range(len(results)):
+ if results[ctr]._resourceID == cobjs[0]._resourceID:
+ results[ctr] = None
+ break
+ yield newtxn.commit()
+
returnValue(results)
self.patch(CalendarStoreFeatures, "calendarObjectsWithUID", _lookup)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20160625/4370b637/attachment.html>
More information about the calendarserver-changes
mailing list