diff options
author | 2011-11-09 18:33:15 -0400 | |
---|---|---|
committer | 2011-11-09 18:33:15 -0400 | |
commit | d3e1a3619ff6939367f43cbd46131b7f60ef6bd0 (patch) | |
tree | bc7e29364f11d3369730b0b61ad58e942b95d1cf /doc/bugs/cyclic_drop.mdwn | |
parent | 2934a65ac5bbab5ac127c495c8c2492e729c2b67 (diff) |
safer inannex checking
git-annex-shell inannex now returns always 0, 1, or 100 (the last when
it's unclear if content is currently in the index due to it currently being
moved or dropped).
(Actual locking code still not yet written.)
Diffstat (limited to 'doc/bugs/cyclic_drop.mdwn')
-rw-r--r-- | doc/bugs/cyclic_drop.mdwn | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/doc/bugs/cyclic_drop.mdwn b/doc/bugs/cyclic_drop.mdwn index d3264c7ca..7804380ae 100644 --- a/doc/bugs/cyclic_drop.mdwn +++ b/doc/bugs/cyclic_drop.mdwn @@ -16,8 +16,8 @@ content and git-annex should refuse to do anything. Then when checking inannex, try to take a shared lock. Note that to avoid deadlock, this must be a nonblocking lock. If it fails, the status of -the content is unknown, so inannex should fail. Note that this needs to be -distinguishable from "not in annex". +the content is unknown, so inannex should fail. Note that this failure +needs to be distinguishable from "not in annex". > Thinking about these lock files, this would be a lot more files, > and would possibly break some assumptions that everything in @@ -52,6 +52,11 @@ The movee removes its copy. So move --to needs to take the content lock on start. Then the inannex will fail. +This is why it's important for inannex to fail in a way that is +distinguishable from "not in annex". Otherwise, move --to +would see the cycle as the remote not having content, and try to +redundantly send it, drop it locally, and still race. + -- move --from is similar. Consider a case where both the local and the remote |