View Single Post
Quote:
Originally Posted by CatOne View Post
Well, right. One try and fail seems pretty cruddy, especially if the try is before the network stack is up (which, again, is up in less than 10 seconds).
The network stack being up doesn't necessarily mean you can do anything useful with it. Your laptop wakes, brings up the network stack, sends a network configuration changed event to any and all processes listening for one and they promptly try to do something. Too bad you've got a DSL connection that went idle while your laptop was asleep, and now the router has to bring that up (which can be pretty pokey, relatively speaking) before it can answer the DNS queries for the address of sync.omnigroup.com. Your initial sync attempt may well time out during that process.

Quote:

It's an annoying remedy, though, _especially_ since when you force the sync you get a modal dialog box as well. The whole sync behavior of OmniFocus is a bit "in your face" in the dialog box, as well as the blocking dialog box on the iOS clients. Other more modern sync systems seem to do it in the background without blocking the whole application.
Hmm, what other modern sync systems sync OmniFocus databases? What seems to be a more efficient sync system may just be one that has a simpler problem to solve!

I agree that the modal dialog box popping up when you manually sync after a sync failure is unnecessary. So does Omni, apparently, because the iPad app doesn't do it. I don't see any reason why clicking on the button shouldn't just do a sync (even if there was a previous failure), and if there is a need to know why a previous sync failed, the (i) button that appears in the Sync preferences gives it.

Quote:
Originally Posted by b-dr View Post
I agree with CatOne: the need for the user to intervene is annoying.

And here's the problem: I just opened my Mac and went to eat some dinner. I came back, 30 minutes later and still no sync.

In other words, I have to manually force the sync, which triggers the pop-up "Your Internet connection...", hit "Retry", and then, finally, everything is in sync. All the time. And the timeframe doesn't matter: it just won't sync automatically after waking up.
That's not true, in my experience, and I just did the test. The problem is that with the default settings, and no changes made to the database by you in the mean time, the next attempt won't be for 60 minutes after the failed attempt.

Arguably, a failure that looks like it might be due to the network being offline (failing to look up the address of the sync host, for example) ought to cause another sync attempt to be scheduled shortly thereafter, perhaps using the TimeFromFirstEditToSync setting (which controls how long it is between you making a change and OmniFocus attempting to sync it to the server, default value being 60 seconds). Because a network configuration change notice doesn't tell you that you've got end-to-end connectivity to the sync server, just that you're now connected to some network and can start bleating packets out into the ether, this is a desirable change IMO even if OmniFocus starts using network configuration change notifications.
Quote:
I agree that the remedy is simple, but it's not painless. (Sort of.) There's no reason for it to require user input.
Agreed, though it is helpful to be able to retrieve the reason for the last failure. I believe my proposal addresses this satisfactorily without adding any friction in the cases where it is not needed.

Quote:
Originally Posted by CatOne View Post
Ayup. And this is a case where support is not helpful. They're quick to acknowledge the issue, but after 3 years of it being acknowledged there's no fix yet.
Support can't do anything for you except offer workarounds if engineering management declines to address the issue.

If you want to dial the time between sync attempts down, quit OmniFocus, open the Terminal app, and enter the following:
Code:
defaults write com.omnigroup.OmniFocus MaximumTimeBetweenSync 60
then restart OmniFocus. This will have OmniFocus initiate a sync every 60 seconds, which should clear any error condition without you having to dismiss any modal dialogs. That's an aggressive value for that setting, but I've used it for extended periods of time when stress-testing syncing without incident. Your mileage may vary. To go back to the default setting, use:
Code:
defaults delete com.omnigroup.OmniFocus MaximumTimeBetweenSync