[sync] SyncML performance issues: history lessons

Karsten Fourmont fourmont at gmx.de
Tue Sep 20 10:21:34 PDT 2005


Hi,

various people were experiencing problems that sync sessions and 
especially the initial slowSync takes very long, possibly resulting in 
timeouts.

I think the problem is in the way we use the history package: the 
history object stores the uid, timestamp and who did the modification 
but not which calendar/addressbook/notepad/todolist the action belongs to.

So the history call returns actions of _all_ users and _all_ 
(data-)sources. Of course a lot of the subsequent api export calls to 
actually retrieve the data return "permission denied" as the user does 
not have permissions to access other people's addresbook/calendar etc. 
This is arkward and time consuming.

The performance issue on the initial slowsync is (hopefully) fixed with 
the latest cvs changes: the slowsync no longer retrieves the elements 
using the history (think of all entries anybody did in any turba 
collection) but rather directly from the list of objects(_list api 
functions rather than _listBy).

However it's kindof strange design that a call like

$histories = $history->getByTimestamp('>', $timestamp,
   array(array('op' => '=', 'field' => 'action', 'value' => 'add')),
   'turba');

returns uids from _all_ addressbooks (including other users private 
ones) regardless whether the user has read permissions on them or not.

Any ideas how to fix this?

BTW: should I (cross-) post something like this to the dev list?

Cheers,
  Karsten



More information about the sync mailing list