Is a "Hub and spoke" model less prone to conflicts?

Hey there!

When I first configured Syncthing on my (5) devices, I opted for a “point to point” (“mesh”) topology. It seemed benefitial at the time, as it would let the initial sync happen a fair bit quicker.

Now that everything is done syncing, I’ve noticed that I get a fair bit of conflict files, particularly when I’m rapidly changing and saving files (e.g. when I’m programming).

I suspect that this happens from loops in the topology. Imagine this scenario:

  1. Device A saves a version 1 of a file
  2. Device A syncs the file to device B
  3. Device A modifies the file to version 2
  4. Device B syncs version 1 of the file to device C
  5. Device C tries to sync version of the file with device A, where it now conflicts with its version 2 of the same file.

Is this issue possible?

Would it be advisable to have a hub-and-spoke topology (or at least one with no cycles)?

Conflicts really shouldn’t happen unless you modify files on multiple devices simultaneously. Have you tried to inspect what exactly is different between the file and its conflicted copy?

One obvious disadvantage of having just a single “hub” is that if the device goes down, then your whole synchronisation stops. You could, however, experiment with 2-3 “hubs” which should be more robust.