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 (l...@synthesis.ch)
- 
Synthesis AG, SyncML Solutions  & Sustainable Software Concepts
i...@synthesis.ch, http://www.synthesis.ch





_______________________________________________
os-libsynthesis mailing list
os-libsynthesis@synthesis.ch
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis

Reply via email to