Improve Uploading Experience
The main goal of the patch is to improve the upload experience of repositories that are larger in size, e.g. 300MB and 3GB.
This is achieved by a series of changes, outlined in each commit, and summarised here:
- Dynamic timeouts for fetching by passing the timeout through the use
Io::FetchandControl::Open. This removes theDEFAULT_CHANNEL_TIMEOUTand we now default toFETCH_TIMEOUTwhen it’s not specified. - The
Emitteris moved to theradiclecrate for re-use inradicle-fetchandradicle-node. - Introduce events for the
upload-packprocess. - Change the
callmethod for the socket stream to usecrossbeam-channelso that events can be subscribed to indefinitely but received with a timeout. - The default value of
FETCH_TIMEOUTis increased to 1 hour to allow the larger repositories to finish announcing and being cloned by seeds when initialised. - Improve
rad initto report theupload-packevents.
17 files changed
+426
-152
cadd996a
→
72c71501
modified Cargo.lock
@@ -2537,6 +2537,7 @@ dependencies = [
|
|
|
|
|
|
| + | |
|
|
|
|
|
modified radicle-cli/examples/rad-init-sync-preferred.md
@@ -10,6 +10,7 @@ Initializing public radicle 👾 repository in [..]
|
|
|
|
|
|
| + | |
|
|
|
|
|
modified radicle-cli/src/commands/init.rs
@@ -2,10 +2,10 @@
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
| - | |
|
|
|
|
|
@@ -14,8 +14,9 @@ use radicle::crypto::{ssh, Verified};
|
|
|
|
|
|
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
@@ -364,7 +365,9 @@ fn sync(
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -392,17 +395,40 @@ fn sync(
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle-cli/src/commands/node/events.rs
@@ -1,10 +1,13 @@
|
|
|
|
| - | |
| + | |
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-fetch/src/transport/fetch.rs
@@ -1,23 +1,21 @@
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -253,6 +251,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -262,6 +261,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -286,6 +286,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
modified radicle-node/Cargo.toml
@@ -21,6 +21,7 @@ colored = { version = "2.1.0" }
|
|
|
|
|
|
| + | |
|
|
|
|
|
modified radicle-node/src/control.rs
@@ -30,12 +30,12 @@ pub enum Error {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| + | |
|
|
| + | |
|
|
| + | |
| + | |
|
|
|
|
|
@@ -74,12 +74,12 @@ enum CommandError {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| + | |
|
|
| + | |
|
|
| + | |
| + | |
|
|
|
|
|
@@ -185,8 +185,7 @@ where
|
|
|
|
|
|
| - | |
| - | |
| + | |
|
|
|
|
|
modified radicle-node/src/runtime.rs
@@ -3,7 +3,6 @@ pub mod thread;
|
|
|
|
|
|
| - | |
|
|
|
|
|
@@ -35,6 +34,7 @@ use crate::{service, LocalTime};
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -84,39 +84,6 @@ pub enum Error {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
modified radicle-node/src/runtime/handle.rs
@@ -124,6 +124,8 @@ impl Handle {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -263,11 +265,8 @@ impl radicle::node::Handle for Handle {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
modified radicle-node/src/service.rs
@@ -97,8 +97,8 @@ pub const MIN_RECONNECTION_DELTA: LocalDuration = LocalDuration::from_secs(3);
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -280,6 +280,8 @@ struct QueuedFetch {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -423,6 +425,10 @@ where
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -948,6 +954,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -964,6 +971,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -1128,6 +1136,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -1140,12 +1149,12 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle-node/src/test/handle.rs
@@ -22,6 +22,8 @@ pub struct Handle {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -81,11 +83,8 @@ impl radicle::node::Handle for Handle {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
modified radicle-node/src/wire/protocol.rs
@@ -29,6 +29,7 @@ use crate::crypto::Signer;
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -43,10 +44,6 @@ pub const NOISE_XK: HandshakePattern = HandshakePattern {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
@@ -131,22 +128,22 @@ impl Streams {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -718,13 +715,16 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1017,7 +1017,7 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1027,7 +1027,6 @@ where
|
|
|
|
|
|
| - | |
|
|
|
|
|
modified radicle-node/src/worker.rs
@@ -5,20 +5,20 @@ mod upload_pack;
|
|
|
|
|
|
| + | |
|
|
| - | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -107,21 +107,21 @@ pub enum FetchRequest {
|
|
|
|
|
|
| - | |
| - | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -230,14 +230,12 @@ impl Worker {
|
|
|
|
|
|
| - | |
| - | |
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -259,10 +257,17 @@ impl Worker {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle-node/src/worker/upload_pack.rs
@@ -1,8 +1,13 @@
|
|
|
|
|
|
| + | |
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -16,15 +21,18 @@ use crate::runtime::thread;
|
|
|
|
|
|
| + | |
|
|
| + | |
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -75,14 +83,21 @@ where
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -104,6 +119,7 @@ where
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -124,9 +140,62 @@ where
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle/src/node.rs
@@ -15,6 +15,7 @@ pub mod timestamp;
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -50,6 +51,9 @@ pub const DEFAULT_SOCKET_NAME: &str = "control.sock";
|
|
|
|
|
|
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -338,6 +342,26 @@ pub enum CommandResult<T> {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -856,6 +880,8 @@ pub enum ConnectResult {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -905,10 +931,53 @@ pub trait Handle: Clone + Sync + Send {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -929,33 +998,19 @@ impl Node {
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1029,6 +1084,8 @@ impl Node {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -1049,6 +1106,7 @@ impl Handle for Node {
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -1122,29 +1180,29 @@ impl Handle for Node {
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
@@ -1166,26 +1224,21 @@ impl Handle for Node {
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
modified radicle/src/node/events.rs
@@ -1,4 +1,10 @@
| + | |
| + | |
| + | |
| + | |
|
|
| + | |
| + | |
|
|
|
|
|
@@ -60,6 +66,13 @@ pub enum Event {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -119,3 +132,36 @@ impl Events {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
added radicle/src/node/events/upload_pack.rs
@@ -0,0 +1,96 @@
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |