For anyone who experiences a break in sync - most likely to occur after coming from an old version of the zimbra backend up to the more recent ones - I think we have found the source of the problem.
A unique ID assigned to appointments created on the phone and passed over to zimbra was encoded in one way by early backend releases. The encoding was changed in later releases to match that being used by some other backends.
But we didn't realise that appointments that were created with the old encoding and synced over to the zimbra server would sit on both the phone and the server quite happily up until the day you did a full resync of the phone. As soon as that happened the phone would try to read the corrupted UID passed back to it from the server, and would fail to sync.
If you suspect you have run into this,
1. De-select Calendar from your sync selections on the phone.
2. Sync
3. Turn on full debug in z-push
4. Re-Select Calendar in your sync selections on the phone
5. Sync (which will likely fail along the way)
The edit your debug.txt file and search for instances of "POOMCAL:UID" - There should be one of these for each appointment sync'ed
Some examples of good UID's are
Code:
06/29/10 15:24:53 [4967] I <POOMCAL:UID>
06/29/10 15:24:53 [4967] I E98riA594EGxg52cUI30B1
06/29/10 15:24:53 [4967] I </POOMCAL:UID>
Code:
06/28/10 15:31:10 [25880] O <POOMCAL:UID>
06/28/10 15:31:10 [25880] O 003e4ec3-fbf6-422e-8656-13048c461f1f
06/28/10 15:31:10 [25880] O </POOMCAL:UID>
Note the I and O in the first column of the debug text means "I"ncoming to the server or "O"utgoing from the server. The two examples above are "I" - from my Nokia phone, and "O" from my zimbra server.
The formats can vary slightly from one phone to another - and also from zimbra to the phone.
From jonallport's log file - we identified the appointments that were causing his sync to fail. All fields in the appointments were present and correct, except that the the UID's in the log were like this
Code:
06/28/10 15:31:10 [25880] O <POOMCAL:UID>
06/28/10 15:31:10 [25880] O
NÖ
06/28/10 15:31:10 [25880] O </POOMCAL:UID>
Code:
06/28/10 15:31:10 [25880] O <POOMCAL:UID>
06/28/10 15:31:10 [25880] O F
NÔÖ
06/28/10 15:31:10 [25880] O </POOMCAL:UID>
The UID's for the two appointments were not long strings as in the good examples above - but instead were multi-line short strings with extended characters. As the corrupted UID is stored in zimbra as a custom extra property - it is not editable through the GUI in any way. So, at this time the only option for bad appointments such as these is to delete them from the server and recreate them.
Once jonallport deleted and recreated his bad appointments (2 out of 20 appointments), his sync is working correctly again.
Thanks to jonallport for his patience while we tried to identify the cause of the issue. As it only affects appointments originated from the phone, hopefully it will not cause too many headaches for people. And, hopefully this procedure will make it easy for people to identify their bad appointments and replace them.