The Omni Group Forums

The Omni Group Forums (http://forums.omnigroup.com/index.php)
-   Bonjour sync (http://forums.omnigroup.com/forumdisplay.php?f=55)
-   -   Bonjour Sync: "No root can reach all tail" error (http://forums.omnigroup.com/showthread.php?t=10498)

ian.munday 2008-11-05 01:47 PM

Bonjour Sync: "No root can reach all tail" error
 
I've been using OmniFocus for iPhone for barely two days, using Bonjour to Sync with OmniFocus, and encountered an error only a couple of syncs with OmniFocus on my Mac.

The error report is along the lines of:

[CODE]Unable to synchronize database with server.

Unable to read document.

No root can reach all tail transactions in "...".
[/CODE]

And I've a load of console error messages like:

[CODE]05/11/2008 21:49:49 OmniFocus[53668] sync terminated with error: {
code = 7;
domain = "com.omnigroup.OmniFocus.XMLData.ErrorDomain";
userInfo = {
NSLocalizedDescription = "Unable to read document.";
NSLocalizedRecoverySuggestion = "No root can reach all tail transactions in \"file://localhost/Users/ian/Library/Application%20Support/OmniFocus/Synchronization%20Data/Documents/OmniFocus.ofocus/\".";
"com.omnigroup.framework.OmniBase.ErrorDomain.FileLineAndNumber" = "/Volumes/Disk/Users/Shared/kc/ReleaseProduct/Source/OmniGroup/Applications/Focus/XMLData/XMLTransactionGraph.m:359";
};
}
[/CODE]

I turned off syncing in Mac OmniFocus, then turned it back on again. I then found I had to choose either the remote or local copy when next trying to sync iPhone OmniFocus, and promptly lost all the changes (quite a number!) I'd made on my iPhone.

Is this a known issue that is high on the list to be fixed? Is there a way around fixing this problem [B]without[/B] losing data that I'm not aware of?

Regards,

Ian

whpalmer4 2008-11-05 04:56 PM

[QUOTE=ian.munday;50258]
I turned off syncing in Mac OmniFocus, then turned it back on again. I then found I had to choose either the remote or local copy when next trying to sync iPhone OmniFocus, and promptly lost all the changes (quite a number!) I'd made on my iPhone.

Is this a known issue that is high on the list to be fixed? Is there a way around fixing this problem [B]without[/B] losing data that I'm not aware of?

Regards,

Ian[/QUOTE]
Well, which did you choose when syncing? If you don't want to lose data, and have only made changes on one, choose the copy that corresponds to the machine that has them. If you've got changes on more than one, you're going to lose some of them.

If I understood your description, you could have saved the changes you made on the phone if you selected the local copy when you synced on the phone. That would write a copy of the phone's database to the desktop machine.

jbezdek 2008-11-06 06:48 AM

Me too
 
This morning, I started seeing exactly this error all of a sudden. I have made no major changes to the database that I'm aware of. Yesterday it synced just fine, this morning: "No root can reach all tail transactions."

johan 2008-11-06 08:56 AM

Irritating...
 
I encountered this problem today as well. I will try to just remove the file and re-sync Omnifocus, but I seriously think that I have spent a little too much money on this app to have to waste so much time on syncing the handheld with the laptop. I hope that Omni Group fixes these issues promptly. :)

Lizard 2008-11-06 09:38 AM

Please send email about this error to our Support Ninjas. (omnifocus@omnigroup.com) They may be able to recover your data. And the more details we have about people encountering this, the more quickly we'll be able to figure out what's gone wrong and fix the bug.

Brian 2008-11-06 04:05 PM

From what we're seeing with the folks that are reporting this, there isn't actually a problem with their data - the error message that folks are getting is popping up in error for some reason that we're still trying to determine.

The "local or server" dialog pops up when folks switch from one type of syncing to another type of syncing, and then switch back to the first type. This is confusing, but it's arguably correct behavior.

Here's what happens: you're syncing with MobileMe. Your database is synced up to a couple different devices and your server is all happy.

You switch to another type of syncing - bonjour for example. You do a sync.
That copy of OmniFocus sees that there are no other devices syncing with the new server, so it says to itself "Hey, why am I keeping all these transaction files? I can compact my data and save a bunch of space." Your database compacts.

The confusing part happens when you switch back to the original sync method; your compacted database from this machine no longer looks like it's connected to the sync database that's on your server. OmniFocus isn't sure what to do, so it asks the user for help.

If folks do see the "local or server" dialog, whpalmer4's advice is correct - if you pick "local", you'll copy the data on this device up to the other one, replacing the data that it has. If you pick "server", you'll copy the data from the other machine down to the one that's displaying the error message. But folks need to pick carefully, because if they make the wrong choice, then yes, you will appear to have lost some information, though it's important to remember that you can use the "Revert To Database Backup" feature to get back to how you were before this all started.

Apologies to the folks hitting this - it's confusing and I'll mention it to the appropriate folks that can try to make it less so.

Brian 2008-11-07 09:28 PM

Bonjour Sync: Resolving "No root can reach all tail"
 
[B]Leaving the text of these posts intact, but removing the script; it was meant to fix a specific problem in a specific build of OmniFocus and is no longer relevant.[/B]

Since we launched Bonjour sync, we've identified an issue that can cause folks to get an error message that reads, in part, "No root can reach all tail transactions".

This occurs in a very specific situation. One device sees that one of its client files is more than an hour old, and the database can be compacted. It removes the client file and starts to compact the database, removing all the transactions up to the point of the client file that was removed.

Before the first device finishes compacting, a second device looks at the sync database, sees that the database (now missing the client file from the first machine) can be compacted and also does so, but compacts slightly further in the chain of transactions. Your sync database ends up with two root files, so you get the error message. Basically, if two of your devices sync within a split-second window, you'll have this happen.

It's important to note that the problem causes OmniFocus to stop syncing, but no data is lost when this happens. We'll be rolling out new versions of OmniFocus for Mac and for iPhone that prevent this from happening.

In the meantime, though, folks that have this happen can repair their sync databases by downloading and running the attached script.

To repair your database if this happens, please do the following:[LIST=1][*]Download and un-zip the attached UNIX script.[*]Quit OmniFocus, and open Terminal.app, which is located in the Utilities subfolder of the Applications folder.[*]Drag the unzipped file from step 1 and drop it on the Terminal window from step 2.[*]Hit the return key to execute the script, which will repair your database, or print an explanation to the screen explaining why no action was taken.[/LIST]
If you have questions before running the script, if the script refuses to run, or if anything unexpected happens, please contact [EMAIL="omnifocus@omnigroup.com"]omnifocus@omnigroup.com[/EMAIL] and we can assist you.

We apologize for any inconvenience this is causing!

ian.munday 2008-11-09 04:07 AM

Hi Brian

Thanks for getting back on this.

One thing to add is that I've not tried switching from one type of syncing to another. Or at least not intentionally...

Would clicking between the different sync types in the Mac version preferences effectively make this change instantly? (I.e. merely clicking an alternative sync type makes the change, even if I go back to the original type before I close the preferences window.)

All that said, I've not had this issue reappear.

On another note, when syncing, should I start the sync by clicking the sync button on Mac OmniFocus or via my iPhone? Is there any difference?

Regards,

Ian

Andrew 2008-11-10 11:09 AM

Ian, the sync change takes affect immediately, even if you switch back to the old sync type before doing another sync. Sorry. (Although, in my experience, in that case the next sync is fast, picking right back up where it was before the sync type change. Perhaps that's not the case if a different client synced to the server in the interim?)

As for where to start the sync, I think there's some confusion as to how this works. When you say "keep the sync database on this Mac", a sync database is created, which is separate from the "client" database used by that same desktop. That desktop copy of OmniFocus knows to sync to the local sync database, and that is what happens when you click the sync button on the desktop - it does _not_ push changes to your phone. You need to initiate a sync on the phone (or wait for an automatic one) before the phone will get any changes that have been made on the desktop.

If you think about this, you will also see that if you make a change on the desktop, then immediately sync from the phone, the phone will not see the change you just made, because the desktop has not had a chance to sync its changes to the sync database. (Either manually do a sync on the desktop first, or wait a minute for the desktop to initiate its automatic sync.) Similarly, if you make changes on the phone and then sync it to the desktop, you won't see those changes on the desktop client until it performs a sync as well.

Brian 2008-11-13 10:47 AM

See the [URL="http://forums.omnigroup.com/showthread.php?t=10498"]more recent thread[/URL] on this topic. Closing this thread so folks don't think it's the most recent info.


All times are GMT -8. The time now is 03:38 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.