I’m a new user and I’d like to know the semantic guarantees of the Obsidian Sync service in the presence of difficult network conditions. This is not a theoretical problem (and I’m an Evernote refugee exactly because of sync problems): when travelling by train in Europe, for example, 4G network connections are often intermittent in rural areas; ditto for wifi service aboard transatlantic flights.
Consider the following scenario involving Client_1, Client_2, and Server, all of which start out having identical content v1 of a note Note_A.
-
I edit Note_A offline on Client_1, with new content v2.
-
I go online and Client_1 starts to sync by pushing v2 of Note_A.
-
Is this atomic? If the network fails halfway, will Server store a corrupted version of Note_A (i.e. neither v1 nor v2)?
-
If Client_2 syncs, will it pull this corrupted version or will it only see v1?
-
If I rename the title of Note_A to Note_B on Client_1 when offline and then sync, is this rename atomically performed on Server?
-
It appears from the sync logs that a rename is treated as a delete followed by an upload. If the sync is interrupted, can Server be in a state where Note_A is deleted but Note_B hasn’t yet been created? If Client_2 then syncs, will it pull the deletion of Note_A but not the newly created Note_B?
More generally, are there traditional database-style ACID guarantees of sync transactions for Obsidian?
If not, what are the failure modes?
Thanks so much!