Not very long ago, I noticed my iPhone was no longer pushing data up to MobileMe, and further investigation showed that my laptop was also having problems syncing.
The MobileMe icon had an exclamation mark in it, it told me there was 1 conflict, and if I tried to resolve it, nothing happened. If I attempted a sync, it’d attempt it, but I’d get a system log full of errors with no obvious signs of successful data synchronization.
I was seeing ominous system log failures in Console like this repeated many times:
Conflict Resolver[276] [110660] |ISyncRecordGraphNode|Warning| Warning: Failed to look up record with Id: 09000000-0000-0000-1234-430001005678
Conflict Resolver[276] [110660] |ISyncRecordGraphNode|Warning| Warning: Failed to get entityName for record with Id: 09000000-0000-0000-1234-430001005678 (record = (null))
Conflict Resolver[276] [110660] |Conflict Resolver|Error| failed to look up parent relationshipName for entityName: (null) (exception = *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0])
There were other strange messages like this:
Conflict Resolver[276] [110660] |UI Helper Proxy|Error| failed to look up UIHelper for attributeName: calendar on entityName: (null) (exception = *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0])
And this (my personal favorite as it has a sense of humor):
Conflict Resolver[276] [110660] |UI Helper Proxy|Warning| No data type returned for property “calendar” on entity “(null)”, displaying on blind faith…
And also this:
Conflict Resolver[276] [110660] |Conflict Resolver|Warning| Conflict Resolver: *** -[NSCFArray initWithObjects:count:]: attempt to insert nil object at objects[0]
Conflict Resolver[276] *** -[NSCFArray objectAtIndex:]: index (-1 (or possibly larger)) beyond bounds (2)
My guess is that MobileMe has some globally unique identifier that represents one of my sync-able objects, and for some reason it’s missing. That in turn throws off some collection count, and when things don’t balance out between what was expected and what was loaded, a software exception happens.
At that point, I was fairly sure I needed to converse with MobileMe support. Apple has free chat-based support services, but it’s buried. Really buried. Really, really, buried.
- Go to http://www.apple.com/support/mobileme/
- Expand Syncing With MobileMe
- Click Troubleshooting MobileMe Sync issues
- Click Chat Now at the bottom of the page.
It’s a good idea to have your machine and your MobileMe data backed up. TimeMachine, SuperDuper!, or Carbon Copy Cloner will help you do this.
Unregister and Re-Register the Machine
Bring up Apple / System Preferences… / MobileMe. Go to the Sync tab, and at the bottom click on Advanced…
Then select the computer name in the list, and a Stop Syncing Computer… button will appear. Press it. Confirm with Unregister.
Then press the Register Computer button. Press Done.
Check and set the synchronize with MobileMe to Manually. Leave the preferences panel up, you’ll be back in a second.
Blow Aware the Sync History
You’ll need to reset your sync history which requires the iSync tool and a Python script run at the command line:
- In the Finder, choose Applications from the Go menu, then double-click iSync.
- Choose Preferences from the iSync menu.
- Click the Reset Sync History button.
- When the window opens to confirm the reset, click Reset Sync History.
- Close the Preferences window.
- Quit iSync.
- Open the Utilities folder (located inside the Applications folder) and double click the terminal.
- Paste this command in the Terminal and press return: “/System/Library/Frameworks/SyncServices.framework/Versions/A/Resources/resetsync.pl full” – without the quote marks. There will be no output.
- Quit terminal.
Re-sync
Select the items you want sync’d. Change the Synchronize with MobileMe back to Automatically.
You might get prompted with a request to sync immediately. If you are trying to push everything on your machine to MobileMe, stepping on what’s there, then press cancel and follow the next step. Otherwise confirm and skip the next step.
This next part is optional and you do at your own risk, assuming you have a backup and this is what you intended to do:
Press the Advanced… button. Click Reset Sync Data… and select the direction you want to sync, most likely computer to MobileMe.
At this point, the conflict disappears, but you’re no long able to sync either. Move on to resetting the preferences.
Resetting Preferences for MobileMe
In the MobileMe preferences pane, select the Account Tab, and click Sign Out… Confirm with Sign Out.
Now provide a bogus username and password like: blah@me.com / blahblahblah
You’ll get a name or password invalid message, but your log will show some interesting stuff.
/Applications/System Preferences.app/Contents/MacOS/System Preferences[352] Warning: Removed .Me password
[0x0-0x2c02c].com.apple.systempreferences[352] com.apple.CSConfigDotMacCert-blah@me.com-SharedServices: Already loaded
com.apple.launchd.peruser.501[206] (com.apple.CSConfigDotMacCert-blah@me.com-SharedServices) Throttling respawn: Will start in 6 seconds
com.apple.launchd.peruser.501[206] (com.apple.CSConfigDotMacCert-blah@me.com-SharedServices[470]) Exited with exit code: 1
/System/Library/CoreServices/FileSyncAgent.app/Contents/MacOS/FileSyncAgent[462] PIDFilePath() => ‘/Users/yourname/Library/FileSync/01254cc20d18/.pid’
Sign back in. Once again, go to the Sync tab and set Synchronize with MobileMe to Automatically.
You will get a message that says “A computer named [your machine name] is already registered with MobileMe synchronization server.” If so, press the “Use same name” button.
You may see this in the logs, not to worry:
System Preferences[352] First pass at computer registration failed with error: Error Domain=DotMacProxyErrorDomain Code=-100 UserInfo=0x200e73280 “A computer with this name is already registered with MobileMe.”
System Preferences[352] First pass at computer registration failed with error: Error Domain=DotMacProxyErrorDomain Code=-100 UserInfo=0x200e5fa20 “A computer with this name is already registered with MobileMe.”
System Preferences[352] LightweightMallornLoginSession is registered.
Now check off the items you want sync’d again and press the Sync Now button.
If you are trying to move all of your machine’s data to MobileMe, select the correct replace option when prompted.
And just to be sure that it didn’t do a partial sync, press Sync Now a second time, just incase the automatic setting jumped the gun before you finished selecting all the desired items.
Your syncing woes should be resolved.
But what about me.com?
At this point it’s a good idea to head over the your web account by going to
me.com and logging in.
Check to make sure your data is there.
At this point in time there is known issue with me.com in which the calendar and the contact data does not appear. It is a known problem. Apple is aware of it. It is specific to your profile (other MobileMe accounts aren’t affected). And you need to contact support (see above) and open a trouble ticket. Apple only knows this as a “contacts and calendar loading issue” it has no formal title.
The error you see will be this message on a grey screen: MobileMe is unable to load your contacts. MobileMe could not load your information from the server. Try reloading the page. If this problem persists, contact MobileMe Support.
You can try and clear out your Safari cookies and cache, but realistically this won’t work as other browsers, like Firefox, show the same thing.
- First click the log out button and close the MobileMe (me.com) window.
- Click the safari title (next to the Apple logo) and select “empty cache.”
- Next click the safari title and select preferences.
- Click the security tab.
- Click “show cookies” then hit “remove all”.
- Now close the preferences.
- After all that open a new browser window and log back into MobileMe.
Apple can fix the problem by escalating to the next level of support, and this is most likely more desirable than closing your MobileMe account and opening another, which will force your MobileMe account name to change.