radicle-heartwood-lfs/radicle/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
..
canonical Update toolchain to Rust 1.71 2023-08-09 18:49:13 +02:00
cob Update toolchain to Rust 1.77 2024-03-26 10:03:11 +01:00
identity node: Simplify handling of fetch completion 2024-04-03 14:25:02 +02:00
logger radicle: expose shared logger 2023-12-20 15:11:10 +01:00
node node: Put new `refs` table in new migration 2024-04-01 15:00:13 +02:00
storage radicle: fault tolerant thresholds 2024-04-03 14:30:05 +02:00
test radicle: Switch error type for repository methods 2024-04-03 14:25:02 +02:00
canonical.rs radicle: custom CanonicalFormatter 2023-02-24 11:59:36 +01:00
cli.rs cli: Hints system 2023-11-23 11:07:07 +01:00
cob.rs radicle: TypedId improvements 2024-03-11 12:57:53 +01:00
collections.rs Introduce `cargo-deny` 2023-08-22 14:33:00 +02:00
explorer.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
git.rs cli: Add new `rad inbox` command 2024-02-06 11:40:58 +01:00
identity.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
io.rs Don't ever decrease rlimit 2024-01-17 17:38:52 +01:00
lib.rs radicle: pinned repositories configuration 2024-01-24 10:55:27 +01:00
logger.rs cli: Have a way of enabling logging in helper 2024-01-17 17:34:30 +01:00
node.rs node: Simplify handling of fetch completion 2024-04-03 14:25:02 +02:00
profile.rs node: Cache node inventory 2024-03-21 12:40:58 +01:00
rad.rs node: Make `Storage::refresh` private 2024-03-21 12:40:58 +01:00
serde_ext.rs radicle: Fix some serialization issues 2023-11-17 16:54:27 +01:00
sql.rs Rename `Id` to `RepoId` 2024-01-22 15:51:44 +01:00
storage.rs node: Simplify handling of fetch completion 2024-04-03 14:25:02 +02:00
test.rs node: Improvements to test reliability 2024-04-03 14:25:02 +02:00
version.rs Implement new versioning system 2024-03-25 11:54:08 +01:00
web.rs radicle: pinned repositories configuration 2024-01-24 10:55:27 +01:00