The real reason your iCloud Drive isn't syncing
9 Jul 2019 18:34 | apple | macOS
I recently had the logic board replaced in my 2017 Macbook Pro. I use the awesome Carbon Copy Cloner to keep an image of my system as a bootable backup which can then be easily restored when the machine is returned to me.
This time however I had some issues with iCloud Drive. After restoring the backup I found it wasn’t syncing. I tried the usual troubleshooting steps: turn it off, reboot the machine, turn it back on again. Still wasn’t syncing, just sitting there with all my files and folders seemingly stuck in the state of “waiting to download”. I scoured the internet, lots of people with the same issue and no obvious solution. Curiously though some of the threads had people reporting that their stuff would just suddenly start syncing out of nowhere without them having done anything to prompt it.
Well I have AppleCare so with a due sense of exhaustion and dread I gave them a call. We started a screen share session so they could see the problem. Their first suggestion was to try creating a new user account and seeing if that would sync. I took exception to this - I don’t need this to work on another account, I need it to work on this account. I hung up the call and decided to investigate myself.
I knew from previous messing around with macOS that the main process involved in iCloud Drive syncing was bird. I decided to see if it was logging anything:
$ log stream |egrep -i bird 2019-07-09 18:11:09.546067+0100 0x5afcd Activity 0x6c4a4 1609 0 bird: (CloudDocsDaemon) server-zone/did-sync-down 2019-07-09 18:11:10.672324+0100 0x5afcd Activity 0x6c4a5 1609 0 bird: (CloudDocsDaemon) server-zone/did-sync-down 2019-07-09 18:11:11.626342+0100 0x5afcd Activity 0x6c4a6 1609 0 bird: (CloudDocsDaemon) server-zone/did-sync-down 2019-07-09 18:11:12.629151+0100 0x5afcd Activity 0x6c4a7 1609 0 bird: (CloudDocsDaemon) server-zone/did-sync-down 2019-07-09 18:11:13.496400+0100 0x64538 Activity 0x6c4a8 1609 0 bird: (CloudDocsDaemon) server-zone/did-sync-down 2019-07-09 18:11:14.429404+0100 0x5afcd Activity 0x6c4a9 1609 0 bird: (CloudDocsDaemon) server-zone/did-sync-down
Interesting. These log messages seem to indicate that it’s syncing something down, but what? My files don’t appear to be syncing at all. There’s no obvious activity in the Finder. Curious I had a look at what files the bird process had open:
lsof -p 1609
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bird 1609 admin cwd DIR 1,4 832 2 / bird 1609 admin txt REG 1,4 26656 1400386 /System/Library/PrivateFrameworks/CloudDocsDaemon.framework/Versions/A/Support/bird bird 1609 admin txt REG 1,4 21024 3013734 /Library/Preferences/Logging/.plist-cache.hjohswfh bird 1609 admin txt REG 1,4 27154336 2775567 /usr/share/icu/icudt62l.dat bird 1609 admin txt REG 1,4 32768 3015531 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db-shm bird 1609 admin txt REG 1,4 32768 3082860 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db-shm bird 1609 admin txt REG 1,4 32768 3015536 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/client.db-shm bird 1609 admin txt REG 1,4 32768 3082865 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db-shm bird 1609 admin txt REG 1,4 65536 3083096 /Users/admin/Library/Application Support/CloudDocs/session/s/com~apple~CloudDocs:0/db.db-shm bird 1609 admin txt REG 1,4 288952 897141 /Library/Application Support/CrashReporter/SubmitDiagInfo.domains bird 1609 admin txt REG 1,4 238448 2720071 /private/var/db/timezone/tz/2019a.1.0/icutz/icutz44l.dat bird 1609 admin txt REG 1,4 6270976 3079606 /private/var/folders/3b/xf71n9xx2jz2spvzcy9wc4fh0000gn/0/com.apple.LaunchServices-231-v2.csstore bird 1609 admin txt REG 1,4 973824 2745534 /usr/lib/dyld bird 1609 admin 0r CHR 3,2 0t0 311 /dev/null bird 1609 admin 1u CHR 3,2 0t0 311 /dev/null bird 1609 admin 2u CHR 3,2 0t0 311 /dev/null bird 1609 admin 3r DIR 1,4 192 3002924 /Users/admin/Library/Application Support/CloudDocs bird 1609 admin 4u REG 1,4 4096 3015527 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db bird 1609 admin 5u REG 1,4 4096 3082856 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db bird 1609 admin 6u REG 1,4 32768 3015531 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db-shm bird 1609 admin 7u REG 1,4 487424 3015532 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/client.db bird 1609 admin 8u REG 1,4 4095312 3082859 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db-wal bird 1609 admin 9u REG 1,4 32768 3015536 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/client.db-shm bird 1609 admin 10u REG 1,4 4096 3015527 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db bird 1609 admin 11u REG 1,4 32768 3082860 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db-shm bird 1609 admin 12u REG 1,4 4096 3082861 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db bird 1609 admin 13u REG 1,4 4853392 3082864 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db-wal bird 1609 admin 14u REG 1,4 32768 3082865 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db-shm bird 1609 admin 15u REG 1,4 4096 3082856 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db bird 1609 admin 16 NPOLICY bird 1609 admin 17r REG 1,4 487424 3015532 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/client.db bird 1609 admin 18r REG 1,4 4096 3015527 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db bird 1609 admin 19u REG 1,4 4095312 3082859 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db-wal bird 1609 admin 20r REG 1,4 4096 3082861 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db bird 1609 admin 21r REG 1,4 4096 3082861 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db bird 1609 admin 22u systm 0x455f0d0e6f39ca23 0t0 [ctl com.apple.netsrc id 8 unit 8] bird 1609 admin 23r REG 1,4 487424 3015532 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/client.db bird 1609 admin 24r REG 1,4 4096 3015527 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db bird 1609 admin 25r REG 1,4 535632 3015535 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/client.db-wal bird 1609 admin 26r REG 1,4 2488512 3015530 /Users/admin/Library/Caches/com.apple.bird/unlink/211B4D60-AB4C-416B-B0B2-0951D64A4CB7/db/server.db-wal bird 1609 admin 27r REG 1,4 4096 3082856 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db bird 1609 admin 28r REG 1,4 4853392 3082864 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db-wal bird 1609 admin 29r DIR 1,4 832 2 / bird 1609 admin 30r REG 1,4 4095312 3082859 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db-wal bird 1609 admin 31r REG 1,4 4096 3082861 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db bird 1609 admin 32r REG 1,4 4096 3082856 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db bird 1609 admin 33r REG 1,4 4853392 3082864 /Users/admin/Library/Application Support/CloudDocs/session/db/client.db-wal bird 1609 admin 34r REG 1,4 4095312 3082859 /Users/admin/Library/Application Support/CloudDocs/session/db/server.db-wal bird 1609 admin 35u REG 1,4 1658200064 3083092 /Users/admin/Library/Application Support/CloudDocs/session/s/com~apple~CloudDocs:0/db.db bird 1609 admin 36u REG 1,4 4321912 3083095 /Users/admin/Library/Application Support/CloudDocs/session/s/com~apple~CloudDocs:0/db.db-wal bird 1609 admin 37u REG 1,4 65536 3083096 /Users/admin/Library/Application Support/CloudDocs/session/s/com~apple~CloudDocs:0/db.db-shm bird 1609 admin 38r REG 1,4 288952 897141 /Library/Application Support/CrashReporter/SubmitDiagInfo.domains
Interesting. Lots of files that end in .db - databases perhaps? The one most obviously associated with cloud docs seemed to be:
/Users/admin/Library/Application Support/CloudDocs/session/s/com~apple~CloudDocs:0/db.db
So I went to that directory and had a look. Sure enough this file is a SQLite database. What’s more it was slowing growing in size. So the obvious inference is that this is some kind of metadata database that is being actively synced by the system. Presumably when this is done the files themselves could be synced.
And that turned out to be the case. Eventually it finished syncing its metadata and the files themselves started appearing. So there wasn’t actually any problem, but within the first minute of my call with Apple Support they agreed with me that there was a problem and would no doubt have wasted hours of my time trying to fix something that wasn’t actually broken.
I haven’t dug too deeply into how the syncing process works but I have a theory about why it stalled for so long in my case. I had some git repos in my iCloud Drive that had a lot of files in them. One of them had over 77k files. The way the SQLite database was growing and the corresponding log messages being reported by the bird process lead me to think that it was syncing records in the database one by one or in batches, rather than simply downloading a snapshot of it. This is presumably slow because the number of API requests is a factor of the number of files for which it has to hold metadata. Somebody with a huge number of files in their iCloud Drive would presumably experience this taking even longer than I did, especially if they didn’t have a particularly fast internet connection.
Why Apple chose to make this process invisible in the UI is a mystery. Their discussion forums are full of people baffled by this. They must have had endless support calls and genius bar visits in relation to it, and in many of those cases there may have been nothing actually wrong. The only issue was that the UI gives no indication of what it’s doing so the user thinks it isn’t doing anything
This is bad design.
