mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 20:31:04 +00:00
Collator overseer builder unification (#3335)
resolve https://github.com/paritytech/polkadot-sdk/issues/3116 a follow-up on https://github.com/paritytech/polkadot-sdk/pull/3061#pullrequestreview-1847530265: - [x] reuse collator overseer builder for polkadot-node and collator - [x] run zombienet test (0001-parachains-smoke-test.toml) - [x] make wasm build errors more user-friendly for an easier problem detection when using different toolchains in Rust --------- Co-authored-by: ordian <write@reusable.software> Co-authored-by: s0me0ne-unkn0wn <48632512+s0me0ne-unkn0wn@users.noreply.github.com>
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use collator_overseer::{CollatorOverseerGenArgs, NewMinimalNode};
|
||||
use collator_overseer::NewMinimalNode;
|
||||
|
||||
use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface, RelayChainResult};
|
||||
use cumulus_relay_chain_rpc_interface::{RelayChainRpcClient, RelayChainRpcInterface, Url};
|
||||
@@ -29,6 +29,7 @@ use polkadot_node_network_protocol::{
|
||||
|
||||
use polkadot_node_subsystem_util::metrics::prometheus::Registry;
|
||||
use polkadot_primitives::CollatorPair;
|
||||
use polkadot_service::{overseer::OverseerGenArgs, IsParachainNode};
|
||||
|
||||
use sc_authority_discovery::Service as AuthorityDiscoveryService;
|
||||
use sc_network::{config::FullNetworkConfiguration, Event, NetworkEventStream, NetworkService};
|
||||
@@ -172,10 +173,10 @@ async fn new_minimal_relay_chain(
|
||||
}
|
||||
|
||||
let genesis_hash = relay_chain_rpc_client.block_get_hash(Some(0)).await?.unwrap_or_default();
|
||||
let peer_set_protocol_names =
|
||||
let peerset_protocol_names =
|
||||
PeerSetProtocolNames::new(genesis_hash, config.chain_spec.fork_id());
|
||||
let is_authority = if role.is_authority() { IsAuthority::Yes } else { IsAuthority::No };
|
||||
let notification_services = peer_sets_info(is_authority, &peer_set_protocol_names)
|
||||
let notification_services = peer_sets_info(is_authority, &peerset_protocol_names)
|
||||
.into_iter()
|
||||
.map(|(config, (peerset, service))| {
|
||||
net_config.add_notification_protocol(config);
|
||||
@@ -184,14 +185,14 @@ async fn new_minimal_relay_chain(
|
||||
.collect::<std::collections::HashMap<PeerSet, Box<dyn sc_network::NotificationService>>>();
|
||||
|
||||
let request_protocol_names = ReqProtocolNames::new(genesis_hash, config.chain_spec.fork_id());
|
||||
let (collation_req_receiver_v1, collation_req_receiver_v2, available_data_req_receiver) =
|
||||
let (collation_req_v1_receiver, collation_req_v2_receiver, available_data_req_receiver) =
|
||||
build_request_response_protocol_receivers(&request_protocol_names, &mut net_config);
|
||||
|
||||
let best_header = relay_chain_rpc_client
|
||||
.chain_get_header(None)
|
||||
.await?
|
||||
.ok_or_else(|| RelayChainError::RpcCallError("Unable to fetch best header".to_string()))?;
|
||||
let (network, network_starter, sync_oracle) = build_collator_network(
|
||||
let (network, network_starter, sync_service) = build_collator_network(
|
||||
&config,
|
||||
net_config,
|
||||
task_manager.spawn_handle(),
|
||||
@@ -208,19 +209,20 @@ async fn new_minimal_relay_chain(
|
||||
prometheus_registry.cloned(),
|
||||
);
|
||||
|
||||
let overseer_args = CollatorOverseerGenArgs {
|
||||
let overseer_args = OverseerGenArgs {
|
||||
runtime_client: relay_chain_rpc_client.clone(),
|
||||
network_service: network,
|
||||
sync_oracle,
|
||||
sync_service,
|
||||
authority_discovery_service,
|
||||
collation_req_receiver_v1,
|
||||
collation_req_receiver_v2,
|
||||
collation_req_v1_receiver,
|
||||
collation_req_v2_receiver,
|
||||
available_data_req_receiver,
|
||||
registry: prometheus_registry,
|
||||
spawner: task_manager.spawn_handle(),
|
||||
collator_pair,
|
||||
is_parachain_node: IsParachainNode::Collator(collator_pair),
|
||||
overseer_message_channel_capacity_override: None,
|
||||
req_protocol_names: request_protocol_names,
|
||||
peer_set_protocol_names,
|
||||
peerset_protocol_names,
|
||||
notification_services,
|
||||
};
|
||||
|
||||
@@ -240,10 +242,10 @@ fn build_request_response_protocol_receivers(
|
||||
IncomingRequestReceiver<v2::CollationFetchingRequest>,
|
||||
IncomingRequestReceiver<v1::AvailableDataFetchingRequest>,
|
||||
) {
|
||||
let (collation_req_receiver_v1, cfg) =
|
||||
let (collation_req_v1_receiver, cfg) =
|
||||
IncomingRequest::get_config_receiver(request_protocol_names);
|
||||
config.add_request_response_protocol(cfg);
|
||||
let (collation_req_receiver_v2, cfg) =
|
||||
let (collation_req_v2_receiver, cfg) =
|
||||
IncomingRequest::get_config_receiver(request_protocol_names);
|
||||
config.add_request_response_protocol(cfg);
|
||||
let (available_data_req_receiver, cfg) =
|
||||
@@ -251,5 +253,5 @@ fn build_request_response_protocol_receivers(
|
||||
config.add_request_response_protocol(cfg);
|
||||
let cfg = Protocol::ChunkFetchingV1.get_outbound_only_config(request_protocol_names);
|
||||
config.add_request_response_protocol(cfg);
|
||||
(collation_req_receiver_v1, collation_req_receiver_v2, available_data_req_receiver)
|
||||
(collation_req_v1_receiver, collation_req_v2_receiver, available_data_req_receiver)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user