On 07.02.2013, at 14:14, Patrick Ohly <patrick.ohly(a)intel.com> wrote:
On Thu, 2013-02-07 at 13:46 +0100, Christof Schulze wrote:
> I started with a one-way-sync from phone to syncevo-http-server.
> This caused syncevolution to remove all data from owncloud, which is
> perfectly fine. However doing so takes about one second for each entry
> causing the phone to report a timeout after a while.
>
> What is your take on that? Shouldn't syncevo-http-server try to keep the
> session to the phone open?
The session is kept open; it's the phone decides that it is waiting too
long for a reply and therefore aborts. I know that the Synthesis SyncML
engine can send empty messages to inform the client that it is still
alive, but I am not familiar with how that works in detail.
Lukas, can you say more about this feature? When does it kick in?
This only works during loading the sync set, and only if libsynthesis is configured to
allow threads (<multithread> set). Then, the initial loading operation
(performStartSync()) is run in a separate thread while the main thread issues a (empty)
response every <requestmaxtime>.
However, the deletes that seem to cause the timeout are probably happening during
implStartDataWrite()/apiZapSyncSet(), which does not have the option to get executed in a
separate thread.
> Maybe a better approach would be to clean all
> files at once on the webdav server to circumvent the timeout in the
> first place?
Did you do a "refresh" sync?
There are ways to let a backend wipe out data more efficiently. The
WebDAV backend doesn't support that at the moment, leading to a lot of
DELETE requests. As you said, this should be added.
Yes, a more efficient delete-all operation usually can solve this problem. The
libsynthesis plugin API has the option to implement a delete-all operation in
DeleteSyncSet(), only if it is not implemented, the engine will issue a row of single item
deletes.
Lukas
Lukas Zeller, plan44.ch
luz(a)plan44.ch -
www.plan44.ch