[CalendarServer-dev] Unbound RRULE rewritten to COUNT=400
cdaboo at apple.com
Wed Jul 1 07:31:19 PDT 2009
--On July 1, 2009 4:20:31 PM +0200 Helge Heß <me at helgehess.eu> wrote:
> when I save an unbound RRULE, CalendarServer seems to rewrite it to a
> bound RRULE with a constant count of 400.
> Why is that? Does CalServer flatten RRULEs somewhere?
> I wonder whether its appropriate to convert a COUNT=400 to unlimited on
> import ... (should there be an X-CAL-SERVER-COUNT property instead?)
We deliberately truncate unbounded RRULEs that would generate too many
instances in our index for performance reasons. The basic policy is this:
1) For an unbounded RRULE with FREQ equal to anything other than YEARLY we
2) For a bounded RRULE with a COUNT greater than 400, we set COUNT=400.
3) For a bounded RRULE with an UNTIL we attempt to determine the number of
instances up to the UNTIL value (using a fast, but not absolutely accurate,
method based on frequency and period). If instances exceed 400 we remove
the UNTIL and add COUNT=400.
There are still some tweaks we are thinking about here. In particular it
has been suggested that rather than doing a COUNT truncation, what we
should do is set UNTIL to the end of the year after the year in the DTSTART
- i.e. allow at least one whole year's worth of bookings.
At some point we may also revise our indexing to remove the performance
issue at which point truncation may not be needed - but for now it is
better to do it.
More information about the calendarserver-dev