radicle-heartwood-lfs/radicle-fetch/src
Fintan Halpenny cd9b46fe51
radicle: fault tolerant thresholds
There are two areas where we can be more tolerant of delegate namespaces
being missing or not validating:
1. Calculating the canonical HEAD
2. Fetching from a remote

In 1. the protocol is tolerant in that if the local node does not have
the default branch for a delegate, it will still attempt to use any of
the delegates it does have to reach the threshold.

This is made safe by ensuring that if the threshold is being updated
then the node performing the update must have a threshold of delegates
locally in their storage. It also made safe by 2.

In 2. the protocol is tolerant by allowing delegates to be missing
from the serving side, as long as they can still meet a threshold of
delegates. This is further tolerant, when validating the received
data, a threshold of delegates are valid to consider the fetch
successful -- otherwise it will fail.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
2024-04-03 14:30:05 +02:00
..
git fetch: allow fetch of annotated tags 2024-03-11 11:13:26 +01:00
transport fetch: assure that the final flush packet is consumed after receiving a pack 2023-11-17 12:24:10 +01:00
git.rs Update toolchain to Rust 1.77 2024-03-26 10:03:11 +01:00
handle.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
lib.rs node: Use refs cache to decide on fetching 2024-03-29 16:00:33 +01:00
policy.rs Fix code around default policies 2024-01-25 21:11:08 +01:00
refs.rs Update toolchain to Rust 1.77 2024-03-26 10:03:11 +01:00
sigrefs.rs radicle: fault tolerant thresholds 2024-04-03 14:30:05 +02:00
stage.rs radicle: fault tolerant thresholds 2024-04-03 14:30:05 +02:00
state.rs radicle: fault tolerant thresholds 2024-04-03 14:30:05 +02:00
transport.rs Update Rust toolchain to 1.74 2023-11-17 16:58:24 +01:00