I’m using UltraliteJ 126.96.36.19969 on Android 3.1 synchronizing against Mobilink 188.8.131.5269 on MS Windows Server 2008 R2 and MS SqlServer 2005 as consolidated database.
In ultralite I have created a publication that contains just Download-Only tables (created with Synchronize Download option). I’m synchronizing with default syncParam.setDownloadOnly(false);
Sometimes I see this warning in Mobilink logs:
 The consolidated and remote databases disagree on when the last synchronization took place, the progress offsets are x in the consolidated database and x+1 in the remote database. The remote is being asked to send a new upload that starts at the last known synchronization point
I’m not worry about because it resolve automatically, but sync stats shows an abnormally high time in upload. For example:
PHASE: receive_upload: 500
I wonder if it is safe to combine Download-Only tables and synchronizing always with syncParam.setDownlodadOnly(true). I think this will avoid sending any kind of upload info (neither Ultralite progress counter) so making synchronization faster and avoiding  warning. But I’m worry about download-only-synchronization documentation remarks:
“When you have remotes that are synchronized by download-only synchronization, you should regularly do a full synchronization to reduce the amount of log that is scanned by the download-only synchronization. Otherwise, the download-only synchronizations will take an increasingly long time to complete.”
asked 18 Sep '12, 07:15
The "receive_upload" phase is poorly named. At the beginning of a sync, the client sends the server a bunch of data telling it stuff like the user name password and what to do in the database. We can have a "receive_upload" phase, even if there is no actual upload data in it. Equivalently, the "sending_download" phase doesn't necessarily involve sending download data. I think better names would be "receive_commands" and "send_responses".
You can confirm that your download-only syncs are actually download-only by looking for the phrase "COMMIT Transaction: Upload" in the log. It will be there for a successful sync if and only if you had an upload.
Your concerns about expensive log scanning probably don't apply to UL for Android, because it doesn't have a log.
The documentation regarding the log scan applies to UltraLiteJ for J2SE and BlackBerry, not for Android. It also only applies to regular tables. Download-only tables have no log of transactions to sync.
Is there any other kinds of operations or synchronizations that you are doing along with your download-only syncs?
Since you are using download-only tables, you can try just doing a regular synchronization without syncParam.setDownloadOnly(true) - does that make the warnings go away?
answered 18 Sep '12, 09:54