Weird syncing issue between 3 devices

Hello guys, I have a setup of syncing same folder b/w 3 devices. The setup is this: Device A creates some new files (actually it creates updated version of same sets of files). It then sync those changes with other 2 devices B, C. Both devices B, C are on same Wifi. A is always on Internet far away.
But out of B and C, only B is turned on more often than C. So often B is the devices that gets update the first from A. Device A only shares the folder in Send Only mode. B, C shares in Send/Receive mode.

Now the problem: When device B is update to date and on same Wifi as C and C is turned on, C instead pulls the data from A instead of B. Shouldn’t C be pulling data from B sometimes, especially when they are on same Wifi, which, btw has NAT enabled.

Thanks for reading this, and thanks a lot to Syncthing community for creating this super-easy software. Cheers! :clap:t2:

1 Like

It should pull data from both A and B (generally from all devices that have the required data and that are connected). How do you diagnose that it isn’t downloading from B?

Well by frequently checking manually, because my internet speed has gone flaky since past few months. I see each device detials from C GUI and always observe that it pulls from A only.

Can you post screenshots from A and B with the folder expanded please.


Device A: v1.16.1, Linux (64-bit Intel/AMD).
Device B: v1.15.1.0 Syncthing-fork Wrapper version.
Device C: v1.15.1, macOS (64-bit Intel/AMD)

Device A:

Device B:

I am not sure how you observe that C pulls from A, because there is nothing in the UI (or even logs) that would tell you that.

Yes, it’s expected that it pulls files from both devices, as that’s how syncthing works. It will naturally end up pulling more data from the device that responds with the data faster (B in this case), but it’s not going to avoid pulling data from A.

If you want C to only download files from B, then remove the link between A and C, so that C can only get the files via B.

1 Like

I am not sure how you observe that C pulls from A, because there is nothing in the UI (or even logs) that would tell you that.

Well, you can check that. You need to view upload/download rates of A from C GUI under Remote Devices. Same thing for B from C GUI.

If you want C to only download files from B, then remove the link between A and C, so that C can only get the files via B.

I do not want that.

I can create a new file on A with size in few GB right now and send you screen shots of device details. How about that? :blush:

I guess I am not sure I understand what you are trying to do/expect to happen.

The screenshot would show both B and C downloading the file from A, as expected, because only A has the file.

Then roughly half way through the file, I’d expect B and C start sharing data between each other, shifting half of the load/traffic from A onto each other.

Hmm, what I am want is that when B is update to date with A and C is turned on, which at this point is out-of-date with A, C should pull from B not A, or both.

The only way to do that, is to remove the link between A and C.

In syncthing all devices are equal, there is no reason why C would think that B is somehow special to direct all the traffic there.

You can rate limit A on C, which will naturally make it get more data from B, but it will be rate limited for new files as well.

Even if C knew that B is somehow special, perhaps B is overwhelmed with requests from some other set of devices, so the logical thing to do is to still ask everyone for data, and direct proportionally more traffic to the device that responds the fastest, if you are optimising for propagation speed, which we are.

From what I understand @rf007 is describing that when B is already fully synced, that C is still only pulling data from A, and none from B - as in the transfer rate to B stays at 0. Correct?

What I wanted the screenshots for was to check: 1. that the folder is actually shared between A and B - you redacted that bit, I hope it is. I know, unlikely and trivial mistake, but it happens so I like to check. 2. That devices A and B are actually connected via local tcp. Device B being an android device means all kinds of things might go wrong there. Please post screenshots including the external devices from both sides.

And finally if all of the above checks out, recreate the scenario (A and B in sync, C missing one file) and enable model debug logging on B and C before connecting C to start the sync. That will show in detail where stuff is synced from.

YES. Correct!

Can you please tell me how do I do that?

Either set the environment variable STTRACE=model when running Syncthing or in the web UI go to Actions > Logs and choose it in the list of debugging facilities.

This does not affect me anymore. I found the issue, and it was because of android. I am using TrackerControl app to block trackers in my apps, which was messing up the local connection on Wifi and only allowing Internet connection. My sincere apologies and thanks a lot for your time.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.