From: Joey Hess Date: Thu, 15 Aug 2024 17:50:50 +0000 (-0400) Subject: todo X-Git-Tag: archive/raspbian/10.20250416-2+rpi1~1^2~21^2~116 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=63ccf6ffa73e5ccb589066e1ab1d620267a21ae3;p=git-annex.git todo --- diff --git a/doc/todo/git-annex_proxies.mdwn b/doc/todo/git-annex_proxies.mdwn index fd55c01152..89d196d603 100644 --- a/doc/todo/git-annex_proxies.mdwn +++ b/doc/todo/git-annex_proxies.mdwn @@ -44,6 +44,24 @@ Planned schedule of work: It should avoid sending both in this situation. (Also discussed in above todo) + * There can also be a race with 2 concurrent threads where one just + finished sending to a repo, but has not yet updated the location log. + So the other one won't see an updated repo size. + + The fact that location log changes happen in CommandCleanup makes + this difficult to fix. + + Could provisionally update Annex.reposizes before starting to send a + key, and roll it back if the send fails. But then Logs.Location + would update Annex.reposizes redundantly. So would need to remember + the provisional update was made until that is called.... But what if it + is never called for some reason? + + This race only really matters when the repo becomes full, + then the second thread will fail to send because it's full. Or will + send more than the configured maxsize. Still this would be good to + fix. + * `fullybalanced=foo:2` can get stuck in suboptimal situations. Eg, when 2 out of 3 repositories are full, and the 3rd is mostly empty, it is no longer possible to add new files to 2 repositories.