I have hosts A, B and C. A and B are on the same LAN. C is remote.
B needs files which are both on A and C. C is running 24/7.
When I start B, it starts to synchronize over the slow remote connection from C, which is fine. Now, when I boot A, B is recognizing that A is a LAN connection but keeps synchronizing with C instead of switching to the much faster connection A.
You can probably enable model debugging to verify that, but assuming B knew that A had the full file before it came online, it should have done the right thing.
If A came online and discovered the file as being available after the download on B has already started, then this is expected.
So does a device always schedule pulling all blocks of a file from the same remote device? I thought it requested blocks from anywhere they are available, thus parts could come from A and other parts from C. Because A is quicker to deliver them, it automatically gets more requests.
The “who has the file” comes from the database, which we take a snapshot of when we start pulling. We then try to spread the requests to all devices that have the file, prioritising to devices that have the least in flight requests.