git-annex/P2P
Joey Hess f452bd448a
REMOVE-BEFORE and GETTIMESTAMP proxying
For clusters, the timestamps have to be translated, since each node can
have its own idea about what time it is. To translate a timestamp, the
proxy remembers what time it asked the node for a timestamp in
GETTIMESTAMP, and applies the delta as an offset in REMOVE-BEFORE.

This does mean that a remove from a cluster has to call GETTIMESTAMP on
every node before dropping from nodes. Not very efficient. Although
currently it tries to drop from every single node anyway, which is also
not very efficient.

I thought about caching the GETTIMESTAMP from the nodes on the first
call. That would improve efficiency. But, since monotonic clocks on
!Linux don't advance when the computer is suspended, consider what might
happen if one node was suspended for a while, then came back. Its
monotonic timestamp would end up behind where the proxying expects it to
be. Would that result in removing when it shouldn't, or refusing to
remove when it should? Have not thought it through. Either way, a
cluster behaving strangly for an extended period of time because one
of its nodes was briefly asleep doesn't seem like good behavior.
2024-07-04 15:09:34 -04:00
..
Address.hs Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Annex.hs use REMOVE-BEFORE in P2P protocol 2024-07-04 13:47:38 -04:00
Auth.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
IO.hs factor out Utility.MonotonicClock 2024-07-03 17:54:01 -04:00
Protocol.hs use REMOVE-BEFORE in P2P protocol 2024-07-04 13:47:38 -04:00
Proxy.hs REMOVE-BEFORE and GETTIMESTAMP proxying 2024-07-04 15:09:34 -04:00