node: Have multiple fetch queues
In the current design it’s possible for one peer to fill the fetch queue so that fetches from other peers are delayed.
To improve fairness, we move to a queue per peer. We then try to dequeue from all peers in a random order for good measure.
4 files changed
+184
-106
27eff809
→
4a497fa6
modified radicle-node/src/runtime/handle.rs
@@ -334,11 +334,16 @@ impl radicle::node::Handle for Handle {
|
|
|
|
|
|
| - | |
| + | |
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle-node/src/service.rs
@@ -10,7 +10,7 @@ pub mod message;
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -60,7 +60,7 @@ use crate::{crypto, PROTOCOL_VERSION};
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -312,31 +312,6 @@ impl FetchState {
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
@@ -438,8 +413,6 @@ pub struct Service<D, S, G> {
|
|
|
|
|
|
| - | |
| - | |
|
|
|
|
|
@@ -525,7 +498,6 @@ where
|
|
|
|
|
|
| - | |
|
|
|
|
|
@@ -809,7 +781,7 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1045,17 +1017,14 @@ where
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1075,6 +1044,17 @@ where
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1091,10 +1071,13 @@ where
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1109,7 +1092,7 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1214,56 +1197,57 @@ where
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
|
|
|
|
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
@@ -1460,7 +1444,7 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1586,10 +1570,12 @@ where
|
|
|
|
|
|
| + | |
|
|
| - | |
| - | |
| - | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1604,7 +1590,7 @@ where
|
|
|
|
|
|
| - | |
| + | |
|
|
|
|
|
@@ -1618,6 +1604,12 @@ where
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -2612,8 +2604,6 @@ pub trait ServiceState {
|
|
|
|
|
|
| - | |
| - | |
|
|
|
|
|
@@ -2650,10 +2640,6 @@ where
|
|
|
|
|
|
| - | |
| - | |
| - | |
| - | |
|
|
|
|
|
modified radicle-node/src/service/session.rs
@@ -1,17 +1,22 @@
|
|
| - | |
| + | |
| + | |
| + | |
|
|
|
|
| - | |
| + | |
|
|
|
|
|
|
| + | |
|
|
|
|
|
|
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -43,6 +48,52 @@ impl Error {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -61,6 +112,8 @@ pub struct Session {
|
|
|
|
|
|
| + | |
| + | |
|
|
|
|
|
@@ -101,6 +154,7 @@ impl Session {
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -129,6 +183,7 @@ impl Session {
|
|
|
|
|
|
| + | |
|
|
|
|
|
@@ -171,6 +226,25 @@ impl Session {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
modified radicle-node/src/tests.rs
@@ -1526,8 +1526,16 @@ fn test_queued_fetch_from_command_same_rid() {
|
|
|
|
|
|
| + | |
| + | |
| + | |
| + | |
| + | |
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
@@ -1535,16 +1543,21 @@ fn test_queued_fetch_from_command_same_rid() {
|
|
|
|
|
|
| - | |
| + | |
|
|
| - | |
| + | |
| + | |
| + | |
| + | |
|
|
|
|
|
|
|
|
| - | |
| + | |
|
|
| - | |
| + | |
| + | |
| + | |
|
|
|
|
|