Hello Patrick,
On Jan 29, 2010, at 19:49 , Patrick Ohly wrote:
> Another peculiarity: on the server, after calling ABORTDATASTORE(),
> 'ReadSyncSet' is done and items are read from the database as part of
> 'GetItems'. On the client, only 'ReadSyncSet' is done. Server log below.
> Shouldn't the engine skip these steps because the store has already
> failed?
Yes, it should but a check for isAborted() was missing after calling the
<datastoreinitscript>. I have added it now (bc0e54ca12 (Added check such that
if <datastoreinitscript> calls ABORTDATASTORE(), the abort gets propagated)),
but I'm not sure it will improve the situation, as it will cause the entire
sync to stop, not just the datastore (because a problem in initializing the
sync is considered a fatal error and will lead to a AbortSession() (at
syncagent.cpp:1171). On the other hand, I don't think just suppressing
operations on that single datastore would help a lot - most servers will expect
a full sync cycle or then get confused.
We could check at syncagent.cpp:1171 if the abort reason status is zero (i.e.
ABORTDATASTORE(0) called), and if so behave differently, i.e. just muting that
datastore, but leave the sessing running. But as said, I'm not sure that will
help with many servers.
> There is SLOWSYNC(), documented as "returns true if session is a slow
> sync". I found that it also returns true on a client if the session is a
> refresh-from-client. Is that intentional?
Yes. Within the engine, the term "slow" sync no only covers the two-way slow
sync, but the "refresh" syncs as well, as these are conceptually slows syncs as
well. I think the SyncML standard docs used the term like this at some point.
So:
sync mode "Normal" variant "Slow" variant
------------- --------------------------------------
-------------------------
two-way normal two-way slow sync with data
match
from client update from client ("update server") refresh from client
("reload server")
from server update from server ("update client") refresh from server
("reload device")
After all - a full refresh is as slow as a two-way slow sync; all data has to
travel from one side to the other :-)
Best Regards,
Lukas Zeller ([email protected])
-
Synthesis AG, SyncML Solutions & Sustainable Software Concepts
[email protected], http://www.synthesis.ch
_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis