I've just had again this bug about "delete for title: key not present". This happened on a production device, a week before launch, whilst recording a screencast. Sync stopped syncing. This is getting freaky because how is the user going to know and what is he going to do about it? Remove the app? Clearly this is not an acceptable solution. Sync has to be able to sync no matter what. Otherwise the user will loose confidence, stop using the app, write negative reviews and the business will spiral downwards. Sync should be able to get over errors and continue syncing, just like an HTML browser does not choke on a poorly written Web page and manages to get the rest of the page displayed.
How can we improve the current state of affairs? I have a couple of questions/suggestions.
- How to clear the sync error without removing the app? Unlinking the account does not suffice currently, the app has to be removed manually.
- How to monitor sync errors from an observer?
- There will always be bugs in the sync code, so the sync code must become resilient to sync errors, get past them and not just give up. This is in my opinion the most important improvement area.
Caram
Dec 15 09:55:48 iPad Ubibase[1451] <Warning>: [WARNING] status: REQUEST: op.cpp:116: put_delta error response 400: Delete for title: key is not present in {}
Dec 15 09:55:48 iPad Ubibase[1451] <Warning>: [ERROR] db: database_manager.cpp:1354: datastore op PutDeltaOp(dsid=.jDhtK66VQf8aF9fBd1bbrfM4H1uzwKpWWu8OW3zyJ7k, rev=0->1, nonce=BqAtwQz80CKno5RTfA7Jjw) failed: put_delta error response 400: Delete for title: key is not present in {}