View Single Post
What is the problem?

If you're experiencing this problem, your changes won't synchronize and you'll be repeatedly prompted with an alert asking you to replace your local database and start synchronizing.

How did this happen?

In OmniFocus 1.6.1 - 1.7.2, if you turned off sync and compacted your sync history and then turned sync back on and replaced the sync database with your compact copy, another client which had unsynchronized changes connected to part of the deleted sync history might not realize that those changes were incompatible with the compacted database, so it would merge those changes into the database and cause confusion throughout all the clients. (When you would try to make subsequent changes to the database, it would hook them up to this lost history which meant your new changes would also get lost.)

How does 1.7.3 help?

Well, 1.7.3 isn't out quite yet, but here's what we're doing in the current sneaky peek releases:

The first fix in 1.7.3 (made Friday) was to improve the sync compatibility checks: when merging changes from one database to another, 1.7.3 verifies that the change actually makes sense in the target database. This prevents the problem from being introduced to working databases.

Unfortunately, this didn't help databases which were already broken. We thought we had a formula for fixing those databases (turn off syncing, compact everything into a new, sane local database, then remove all broken databases and turn syncing back on again), but apparently some portion of that recipe wasn't solving the issue for everyone (though it seemed to work in our testing at Omni on Friday—maybe our instructions weren't very clear).

So we continued to collect more information from customers, and the next fix in 1.7.3 (made this morning) was to add a second filtering check: when replacing one copy of a database with another, we check that each change we're copying correctly hooks up to the other changes in the database, skipping anything that doesn't. So the next time you're prompted to sync with the server, OmniFocus will only download changes that are connected to your sync history and skip over anything that tries to connect to the lost history. This means that any subsequent changes made by you should also be connected to the correct sync history, and will stop getting lost.

So, does this solve everything?

1.7.3 fixes databases when it replaces them, but it won't automatically repair a database which is currently broken. If you have a broken sync database, you can fix it by replacing it with a local copy (File->Replace Server Database), and if you have a broken local copy you can fix it by replacing it with a copy on the server. (If you have a broken local copy, you'll probably be prompted to do this automatically the next time you make a change and try to sync.)

Since this repairing code isn't yet available for the iPhone, if it's already in a bad state it could still try to merge changes to the sync database which are derived from some lost portion of history, corrupting the sync database. This will no longer corrupt any 1.7.3 clients (since 1.7.3 verifies the history of every incoming change), but the iPhone itself will still be confused. As soon as we're sure these 1.7.3 changes are stable we'll try to push out a new iPhone release with the same updates, but in the meantime the solution on the iPhone is to clear out your iPhone database (by deleting the app from your iPhone and reinstalling it), then synchronize down a new copy from a fixed sync database. (If your server database might be broken, see the above instructions about fixing it by using 1.7.3 to replace it with the local database.)

Right now we're still waiting for confirmation that 1.7.3 really is able to fix broken databases for people the way we expect it does. Hopefully we'll start hearing back success stories soon, at which point we'll roll out 1.7.3 as a general update recommended for everyone (and submit an updated release of the iPhone app to Apple).

This sounds pretty complicated. Could someone please just help me fix my database?

Certainly! Our tech support ninjas are always happy to walk you through resolving any issues with our software. They're available by email at omnifocus@omnigroup.com, and by telephone at 1-800-315-OMNI or +1 206-523-4152 (10am - 5pm Pacific Time).

I'd like to thank everyone who sent us information to help us figure out what was what was going wrong, and to especially thank those who helped us test fixes! And I'd also like to extend my sincerest apologies to anyone who has been affected by this synchronization issue. I've been working on resolving this through the holiday weekend, and hope to have you back up and running as soon as possible.

Last edited by Brian; 2009-09-10 at 01:31 PM.. Reason: corrected phone support hours