View Single Post
Ken and team,

This is a really old school method of achieving what you guys seem to be looking for. I'll bet that your team has already considered and rejected this, but here goes just in case:

Does iCloud, etc have an atomic rename operation?

In old-time cluster management, one way we achieved an atomic update of an entire directory's worth of information is to temporarily double the amount of storage required by making a duplicate copy. Then we sync with the inactive copy, performing many unique file operations that are not atomic. Once done, we'd perform a single atomic operation to rename (or move) the newly sync'd directory into the official location of the data, displacing the old, un-sync'd version. (Which can be kept around for backup purposes.)

There may be a concern that while syncing a mobile database, a desktop user may commit changes to the original copy. You can implement a "lock" of the original data by renaming the original data directory immediately before duplicating. Making the original copy unavailable in its expected location makes it "read only" so that changes won't appear during the sync'ing process.

I recognize this may not be trivial for you all, but I'd love to see it happen. I used to be an OmniOutliner user, but switched to TaskPaper for two reasons: 1) Braindead sync'ing over Dropbox, 2) Clients for all three of OSX, iPad and iPhone, allowing me to make changes wherever I am, with whatever device I happen to have at the time. OO's lack of iPhone client forced me to consider other options. I'd love to come back to the OO fold some day in the future!