Companion for paritytech/substrate#14080 (#2526)

* Companion for paritytech/substrate#14080

* Update lockfile

* Update Polkadot

* Update Cargo.lock
This commit is contained in:
Aaro Altonen
2023-05-11 15:00:42 +03:00
committed by GitHub
parent 83899e2f16
commit ba75e8b84a
7 changed files with 320 additions and 288 deletions
+280 -270
View File
File diff suppressed because it is too large Load Diff
@@ -29,7 +29,7 @@ use polkadot_node_subsystem_util::metrics::prometheus::Registry;
use polkadot_primitives::CollatorPair; use polkadot_primitives::CollatorPair;
use sc_authority_discovery::Service as AuthorityDiscoveryService; use sc_authority_discovery::Service as AuthorityDiscoveryService;
use sc_network::{Event, NetworkEventStream, NetworkService}; use sc_network::{config::FullNetworkConfiguration, Event, NetworkEventStream, NetworkService};
use sc_service::{Configuration, TaskManager}; use sc_service::{Configuration, TaskManager};
use sp_runtime::{app_crypto::Pair, traits::Block as BlockT}; use sp_runtime::{app_crypto::Pair, traits::Block as BlockT};
@@ -119,11 +119,12 @@ pub async fn build_minimal_relay_chain_node(
/// - AvailabilityDistribution /// - AvailabilityDistribution
#[sc_tracing::logging::prefix_logs_with("Relaychain")] #[sc_tracing::logging::prefix_logs_with("Relaychain")]
async fn new_minimal_relay_chain( async fn new_minimal_relay_chain(
mut config: Configuration, config: Configuration,
collator_pair: CollatorPair, collator_pair: CollatorPair,
relay_chain_rpc_client: Arc<BlockChainRpcClient>, relay_chain_rpc_client: Arc<BlockChainRpcClient>,
) -> Result<NewMinimalNode, RelayChainError> { ) -> Result<NewMinimalNode, RelayChainError> {
let role = config.role.clone(); let role = config.role.clone();
let mut net_config = sc_network::config::FullNetworkConfiguration::new(&config.network);
let task_manager = { let task_manager = {
let registry = config.prometheus_config.as_ref().map(|cfg| &cfg.registry); let registry = config.prometheus_config.as_ref().map(|cfg| &cfg.registry);
@@ -141,21 +142,26 @@ async fn new_minimal_relay_chain(
let peer_set_protocol_names = let peer_set_protocol_names =
PeerSetProtocolNames::new(genesis_hash, config.chain_spec.fork_id()); PeerSetProtocolNames::new(genesis_hash, config.chain_spec.fork_id());
let is_authority = if role.is_authority() { IsAuthority::Yes } else { IsAuthority::No }; let is_authority = if role.is_authority() { IsAuthority::Yes } else { IsAuthority::No };
config
.network for config in peer_sets_info(is_authority, &peer_set_protocol_names) {
.extra_sets net_config.add_notification_protocol(config);
.extend(peer_sets_info(is_authority, &peer_set_protocol_names)); }
let request_protocol_names = ReqProtocolNames::new(genesis_hash, config.chain_spec.fork_id()); let request_protocol_names = ReqProtocolNames::new(genesis_hash, config.chain_spec.fork_id());
let (collation_req_receiver, available_data_req_receiver) = let (collation_req_receiver, available_data_req_receiver) =
build_request_response_protocol_receivers(&request_protocol_names, &mut config); build_request_response_protocol_receivers(&request_protocol_names, &mut net_config);
let best_header = relay_chain_rpc_client let best_header = relay_chain_rpc_client
.chain_get_header(None) .chain_get_header(None)
.await? .await?
.ok_or_else(|| RelayChainError::RpcCallError("Unable to fetch best header".to_string()))?; .ok_or_else(|| RelayChainError::RpcCallError("Unable to fetch best header".to_string()))?;
let (network, network_starter, sync_oracle) = let (network, network_starter, sync_oracle) = build_collator_network(
build_collator_network(&config, task_manager.spawn_handle(), genesis_hash, best_header) &config,
net_config,
task_manager.spawn_handle(),
genesis_hash,
best_header,
)
.map_err(|e| RelayChainError::Application(Box::new(e) as Box<_>))?; .map_err(|e| RelayChainError::Application(Box::new(e) as Box<_>))?;
let authority_discovery_service = build_authority_discovery_service( let authority_discovery_service = build_authority_discovery_service(
@@ -190,18 +196,18 @@ async fn new_minimal_relay_chain(
fn build_request_response_protocol_receivers( fn build_request_response_protocol_receivers(
request_protocol_names: &ReqProtocolNames, request_protocol_names: &ReqProtocolNames,
config: &mut Configuration, config: &mut FullNetworkConfiguration,
) -> ( ) -> (
IncomingRequestReceiver<v1::CollationFetchingRequest>, IncomingRequestReceiver<v1::CollationFetchingRequest>,
IncomingRequestReceiver<v1::AvailableDataFetchingRequest>, IncomingRequestReceiver<v1::AvailableDataFetchingRequest>,
) { ) {
let (collation_req_receiver, cfg) = let (collation_req_receiver, cfg) =
IncomingRequest::get_config_receiver(request_protocol_names); IncomingRequest::get_config_receiver(request_protocol_names);
config.network.request_response_protocols.push(cfg); config.add_request_response_protocol(cfg);
let (available_data_req_receiver, cfg) = let (available_data_req_receiver, cfg) =
IncomingRequest::get_config_receiver(request_protocol_names); IncomingRequest::get_config_receiver(request_protocol_names);
config.network.request_response_protocols.push(cfg); config.add_request_response_protocol(cfg);
let cfg = Protocol::ChunkFetchingV1.get_outbound_only_config(request_protocol_names); let cfg = Protocol::ChunkFetchingV1.get_outbound_only_config(request_protocol_names);
config.network.request_response_protocols.push(cfg); config.add_request_response_protocol(cfg);
(collation_req_receiver, available_data_req_receiver) (collation_req_receiver, available_data_req_receiver)
} }
@@ -24,6 +24,7 @@ use sc_network::{
NetworkService, NetworkService,
}; };
use sc_network::config::FullNetworkConfiguration;
use sc_network_common::{role::Roles, sync::message::BlockAnnouncesHandshake}; use sc_network_common::{role::Roles, sync::message::BlockAnnouncesHandshake};
use sc_service::{error::Error, Configuration, NetworkStarter, SpawnTaskHandle}; use sc_service::{error::Error, Configuration, NetworkStarter, SpawnTaskHandle};
use sc_utils::mpsc::tracing_unbounded; use sc_utils::mpsc::tracing_unbounded;
@@ -33,6 +34,7 @@ use std::{iter, sync::Arc};
/// Build the network service, the network status sinks and an RPC sender. /// Build the network service, the network status sinks and an RPC sender.
pub(crate) fn build_collator_network( pub(crate) fn build_collator_network(
config: &Configuration, config: &Configuration,
network_config: FullNetworkConfiguration,
spawn_handle: SpawnTaskHandle, spawn_handle: SpawnTaskHandle,
genesis_hash: Hash, genesis_hash: Hash,
best_header: Header, best_header: Header,
@@ -61,12 +63,11 @@ pub(crate) fn build_collator_network(
}) })
}, },
fork_id: None, fork_id: None,
network_config: config.network.clone(), network_config,
genesis_hash, genesis_hash,
protocol_id, protocol_id,
metrics_registry: config.prometheus_config.as_ref().map(|config| config.registry.clone()), metrics_registry: config.prometheus_config.as_ref().map(|config| config.registry.clone()),
block_announce_config, block_announce_config,
request_response_protocol_configs: Vec::new(),
tx, tx,
}; };
+3
View File
@@ -301,6 +301,7 @@ pub struct BuildNetworkParams<
Client::Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>, Client::Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block>,
{ {
pub parachain_config: &'a Configuration, pub parachain_config: &'a Configuration,
pub net_config: sc_network::config::FullNetworkConfiguration,
pub client: Arc<Client>, pub client: Arc<Client>,
pub transaction_pool: Arc<sc_transaction_pool::FullPool<Block, Client>>, pub transaction_pool: Arc<sc_transaction_pool::FullPool<Block, Client>>,
pub para_id: ParaId, pub para_id: ParaId,
@@ -313,6 +314,7 @@ pub struct BuildNetworkParams<
pub async fn build_network<'a, Block, Client, RCInterface, IQ>( pub async fn build_network<'a, Block, Client, RCInterface, IQ>(
BuildNetworkParams { BuildNetworkParams {
parachain_config, parachain_config,
net_config,
client, client,
transaction_pool, transaction_pool,
para_id, para_id,
@@ -364,6 +366,7 @@ where
sc_service::build_network(sc_service::BuildNetworkParams { sc_service::build_network(sc_service::BuildNetworkParams {
config: parachain_config, config: parachain_config,
net_config,
client, client,
transaction_pool, transaction_pool,
spawn_handle, spawn_handle,
@@ -157,6 +157,7 @@ async fn start_node_impl(
let params = new_partial(&parachain_config)?; let params = new_partial(&parachain_config)?;
let (block_import, mut telemetry, telemetry_worker_handle) = params.other; let (block_import, mut telemetry, telemetry_worker_handle) = params.other;
let net_config = sc_network::config::FullNetworkConfiguration::new(&parachain_config.network);
let client = params.client.clone(); let client = params.client.clone();
let backend = params.backend.clone(); let backend = params.backend.clone();
@@ -182,6 +183,7 @@ async fn start_node_impl(
let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) =
build_network(BuildNetworkParams { build_network(BuildNetworkParams {
parachain_config: &parachain_config, parachain_config: &parachain_config,
net_config,
client: client.clone(), client: client.clone(),
transaction_pool: transaction_pool.clone(), transaction_pool: transaction_pool.clone(),
para_id, para_id,
+7 -1
View File
@@ -43,7 +43,7 @@ use sc_consensus::{
BlockImportParams, ImportQueue, BlockImportParams, ImportQueue,
}; };
use sc_executor::{HeapAllocStrategy, WasmExecutor, DEFAULT_HEAP_ALLOC_STRATEGY}; use sc_executor::{HeapAllocStrategy, WasmExecutor, DEFAULT_HEAP_ALLOC_STRATEGY};
use sc_network::NetworkBlock; use sc_network::{config::FullNetworkConfiguration, NetworkBlock};
use sc_network_sync::SyncingService; use sc_network_sync::SyncingService;
use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager}; use sc_service::{Configuration, PartialComponents, TFullBackend, TFullClient, TaskManager};
use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle};
@@ -393,10 +393,12 @@ where
let prometheus_registry = parachain_config.prometheus_registry().cloned(); let prometheus_registry = parachain_config.prometheus_registry().cloned();
let transaction_pool = params.transaction_pool.clone(); let transaction_pool = params.transaction_pool.clone();
let import_queue_service = params.import_queue.service(); let import_queue_service = params.import_queue.service();
let net_config = FullNetworkConfiguration::new(&parachain_config.network);
let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) =
build_network(BuildNetworkParams { build_network(BuildNetworkParams {
parachain_config: &parachain_config, parachain_config: &parachain_config,
net_config,
client: client.clone(), client: client.clone(),
transaction_pool: transaction_pool.clone(), transaction_pool: transaction_pool.clone(),
para_id, para_id,
@@ -582,10 +584,12 @@ where
let prometheus_registry = parachain_config.prometheus_registry().cloned(); let prometheus_registry = parachain_config.prometheus_registry().cloned();
let transaction_pool = params.transaction_pool.clone(); let transaction_pool = params.transaction_pool.clone();
let import_queue_service = params.import_queue.service(); let import_queue_service = params.import_queue.service();
let net_config = FullNetworkConfiguration::new(&parachain_config.network);
let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) =
build_network(BuildNetworkParams { build_network(BuildNetworkParams {
parachain_config: &parachain_config, parachain_config: &parachain_config,
net_config,
client: client.clone(), client: client.clone(),
transaction_pool: transaction_pool.clone(), transaction_pool: transaction_pool.clone(),
para_id, para_id,
@@ -1355,10 +1359,12 @@ where
let prometheus_registry = parachain_config.prometheus_registry().cloned(); let prometheus_registry = parachain_config.prometheus_registry().cloned();
let transaction_pool = params.transaction_pool.clone(); let transaction_pool = params.transaction_pool.clone();
let import_queue_service = params.import_queue.service(); let import_queue_service = params.import_queue.service();
let net_config = FullNetworkConfiguration::new(&parachain_config.network);
let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) =
build_network(BuildNetworkParams { build_network(BuildNetworkParams {
parachain_config: &parachain_config, parachain_config: &parachain_config,
net_config,
client: client.clone(), client: client.clone(),
transaction_pool: transaction_pool.clone(), transaction_pool: transaction_pool.clone(),
para_id, para_id,
+5 -1
View File
@@ -54,7 +54,8 @@ use polkadot_service::ProvideRuntimeApi;
use sc_client_api::execution_extensions::ExecutionStrategies; use sc_client_api::execution_extensions::ExecutionStrategies;
use sc_consensus::ImportQueue; use sc_consensus::ImportQueue;
use sc_network::{ use sc_network::{
config::TransportConfig, multiaddr, NetworkBlock, NetworkService, NetworkStateInfo, config::{FullNetworkConfiguration, TransportConfig},
multiaddr, NetworkBlock, NetworkService, NetworkStateInfo,
}; };
use sc_service::{ use sc_service::{
config::{ config::{
@@ -323,9 +324,12 @@ where
.map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?; .map_err(|e| sc_service::Error::Application(Box::new(e) as Box<_>))?;
let import_queue_service = params.import_queue.service(); let import_queue_service = params.import_queue.service();
let net_config = FullNetworkConfiguration::new(&parachain_config.network);
let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) =
build_network(BuildNetworkParams { build_network(BuildNetworkParams {
parachain_config: &parachain_config, parachain_config: &parachain_config,
net_config,
client: client.clone(), client: client.clone(),
transaction_pool: transaction_pool.clone(), transaction_pool: transaction_pool.clone(),
para_id, para_id,