Comment # 3 on bug 86335 from
The unexpectedly high traffic is caused by a "is the collection empty" check.
This is relevant for slow sync prevention, because a slow sync is allowed to
run when there is no data.

The 1.5 release does the check whereas 1.4 (unintentionally) skipped it. This
was fixed for in:

commit dec741ea501add6d9e173821b99af85ee0262034
Author: Patrick Ohly <>
Date:   Wed Aug 20 16:23:15 2014 +0200

    VirtualSyncSource, MapSyncSource: implement m_isEmpty

    This is relevant for isUsable() and not so much (not at all?) for
    slow sync prevention.

The comment explain why the change was made. It *is* relevant for slow sync
prevention, it just wasn't the primary reason for changing the code.

The underlying problem is that the "is empty" check is currently done using
code which downloads the entire calendar. This is necessary to work around bugs
in (ironically) servers like Radical 0.7 which did (do?) not implement a less
costly operation reliably: when asked to report only about VEVENTs, VTODO or
VJOURNAL are also included in the response and vice versa.

The underlying problem is that a collection may contain a mixture of those, but
SyncEvolution only syncs one kind and thus needs to determine the content type
of each item. There is no good support for that in CalDAV.

There are three possible solutions:
1. restore the 1.4 behavior of always assuming that there is data (basically
disabling the more intelligent slow-sync prevention)
2. implement a simpler "is empty" check with potentially false "is not empty"
results when there are some items of unknown content (for example, we sync
VEVENTs and the collection contains only VJOURNAL, but we don't know that
because we avoid downloading the data and thus incorrectly assume that there
might be VEVENTs)
3. implement logic which determines whether a collection really can contain a
mixture of items and only do the more costly check in that case

Option 3 can be combined with 2.

I think I'll start with 2.

You are receiving this mail because: