split NetworkBridge into two subsystems (#5616)

* foo

* rolling session window

* fixup

* remove use statemetn

* fmt

* split NetworkBridge into two subsystems

Pending cleanup

* split

* chore: reexport OrchestraError as OverseerError

* chore: silence warnings

* fixup tests

* chore: add default timenout of 30s to subsystem test helper ctx handle

* single item channel

* fixins

* fmt

* cleanup

* remove dead code

* remove sync bounds again

* wire up shared state

* deal with some FIXMEs

* use distinct tags

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* use tag

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* address naming

tx and rx are common in networking and also have an implicit meaning regarding networking
compared to incoming and outgoing which are already used with subsystems themselvesq

* remove unused sync oracle

* remove unneeded state

* fix tests

* chore: fmt

* do not try to register twice

* leak Metrics type

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Co-authored-by: Andronik <write@reusable.software>
This commit is contained in:
Bernhard Schuster
2022-07-12 18:22:36 +02:00
committed by GitHub
parent c11c1f38f4
commit 3240cb5e4d
40 changed files with 1880 additions and 1429 deletions
@@ -28,16 +28,18 @@ use polkadot_node_subsystem::{
messages::{RuntimeApiMessage, RuntimeApiRequest},
overseer,
};
use thiserror::Error;
/// Sessions unavailable in state to cache.
#[derive(Debug, Clone)]
#[derive(Debug, Clone, thiserror::Error)]
pub enum SessionsUnavailableReason {
/// Runtime API subsystem was unavailable.
RuntimeApiUnavailable(oneshot::Canceled),
#[error(transparent)]
RuntimeApiUnavailable(#[from] oneshot::Canceled),
/// The runtime API itself returned an error.
RuntimeApi(RuntimeApiError),
#[error(transparent)]
RuntimeApi(#[from] RuntimeApiError),
/// Missing session info from runtime API for given `SessionIndex`.
#[error("Missing session index {0:?}")]
Missing(SessionIndex),
}
@@ -53,20 +55,16 @@ pub struct SessionsUnavailableInfo {
}
/// Sessions were unavailable to fetch from the state for some reason.
#[derive(Debug, Error, Clone)]
#[derive(Debug, thiserror::Error, Clone)]
#[error("Sessions unavailable: {kind:?}, info: {info:?}")]
pub struct SessionsUnavailable {
/// The error kind.
#[source]
kind: SessionsUnavailableReason,
/// The info about the session window, if any.
info: Option<SessionsUnavailableInfo>,
}
impl core::fmt::Display for SessionsUnavailable {
fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> {
write!(f, "Sessions unavailable: {:?}, info: {:?}", self.kind, self.info)
}
}
/// An indicated update of the rolling session window.
#[derive(Debug, PartialEq, Clone)]
pub enum SessionWindowUpdate {