todo
kind of a bug, but I'm not sure if it can be fixed
This commit is contained in:
parent
8d4da46273
commit
580c11cf19
1 changed files with 57 additions and 0 deletions
57
doc/todo/avoid_sync_unncessary_transfers.mdwn
Normal file
57
doc/todo/avoid_sync_unncessary_transfers.mdwn
Normal file
|
@ -0,0 +1,57 @@
|
|||
`git-annex sync --content` can sometimes do unncessary transfers
|
||||
when syncing with multiple remotes at the same time. Here is an example:
|
||||
|
||||
git-annex sync --content r2 r3
|
||||
...
|
||||
copy foo (to r2...)
|
||||
ok
|
||||
copy foo (to r3...)
|
||||
ok
|
||||
drop foo (from r2...) ok
|
||||
|
||||
git-annex wanted r3
|
||||
anything
|
||||
git-annex wanted r2
|
||||
not copies=foo:1
|
||||
git-annex group r3
|
||||
foo
|
||||
|
||||
At the time sync decides to copy to the first repository, it legitimately
|
||||
wants the content. But once the content is also copied to the second
|
||||
repository, the first no longer wants it.
|
||||
|
||||
Perhaps this could be improved by sync simulating that the second copy
|
||||
has already happened, and seeing if the first repository still wants the
|
||||
content then.
|
||||
|
||||
But, bear in mind that the second repository may not be accessible
|
||||
currently. And indeed it may currently be located somewhere such that content
|
||||
can only reach it via the first repository. So if it decides to send to the
|
||||
second repository but not then to the first, it should still send to the
|
||||
first repository if it is unable to send to the second.
|
||||
|
||||
So essentially, this would reorder the list of repositories to work on from
|
||||
"r2 r3" to "r3 r2".
|
||||
|
||||
But, it's also possible to have this situation:
|
||||
|
||||
git-annex wanted r3
|
||||
not copies=foo:1
|
||||
git-annex wanted r2
|
||||
not copies=foo:1
|
||||
git-annex group r3
|
||||
foo
|
||||
git-annex group r2
|
||||
foo
|
||||
|
||||
In that situation, `git-annex sync --content r2 r3` will currently send
|
||||
content to r2 when it's accessible. Then r3 doesn't get a copy, and the
|
||||
copy remains on r2. If the list of repositories were reordered, that would
|
||||
change which repository ends up with the file. Which would be surprising
|
||||
since that configuration and order of repositories passed to sync
|
||||
is clear in its desired effect.
|
||||
|
||||
With the config above, there would be no need to reorder the list of
|
||||
repositories since it does not avoid excess work. Are there
|
||||
configs where reordering would avoid excess work, but would also change
|
||||
desired behavior (for the same file)? --[[Joey]]
|
Loading…
Add table
Add a link
Reference in a new issue