summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-03-11 10:10:17 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-03-11 10:10:17 -0400
commitde5c24518b878322cd883ab4d4cfb46d07dbdce3 (patch)
tree0ed7ee3ee5af4eb892189b01c27ccccd213c94c9
parent3e22336428eed74ac28f56339c8a64f3bcfe0232 (diff)
an (important) thought
-rw-r--r--doc/bugs/smarter_flood_filling.mdwn27
1 files changed, 27 insertions, 0 deletions
diff --git a/doc/bugs/smarter_flood_filling.mdwn b/doc/bugs/smarter_flood_filling.mdwn
new file mode 100644
index 000000000..cfff3698f
--- /dev/null
+++ b/doc/bugs/smarter_flood_filling.mdwn
@@ -0,0 +1,27 @@
+The assistant performs a flood fill, sending every file to every remote
+that will have it. This is naive, but it's a good way to ensure the file
+gets to every corner of the repo network that it possibly can.
+
+However, this means that locally paired computers will still upload files
+to a transfer repo, even when they're next to each other and that
+is a massive waste of bandwidth.
+
+It occurred to me this morning that there is a simple change that can avoid
+this.
+
+1. Ensure that locally paired computers have a lower cost than network
+ transfer remotes.
+2. When queuing uploads, queue transfers to the lowest cost remotes first.
+3. Just before starting a transfer, re-check if the transfer is still wanted.
+
+Now, unnecessary transfers to tranfer repos are avoided if it can send
+the file locally instead.
+
+It doesn't solve it for all network topologies of course. If there
+are three computers paired in a line "A --- B --- C", and all 3 share
+a transfer repo, A will still send to both B and the transfer repo
+even though B can reach C via a faster route.
+
+See also: [[assistant does not always use repo cost info when queueing downloads]]
+
+[[!tag /design/assistant]]