From 3d54a759fe455bac54360240d227a5d315a23e3d Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Fri, 5 Mar 2021 12:41:35 +0100 Subject: [PATCH] Print an error if a collator connects to a node without real-overseer (#2563) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Print an error if a collator connects to a node without real-overseer * Update node/service/src/lib.rs Co-authored-by: Bastian Köcher Co-authored-by: Bastian Köcher --- polkadot/node/service/src/lib.rs | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs index 2433a51af3..ff358a97b2 100644 --- a/polkadot/node/service/src/lib.rs +++ b/polkadot/node/service/src/lib.rs @@ -613,6 +613,20 @@ pub fn new_full( #[cfg(feature = "real-overseer")] config.network.extra_sets.extend(polkadot_network_bridge::peer_sets_info()); + // Add a dummy collation set with the intent of printing an error if one tries to connect a + // collator to a node that isn't compiled with `--features real-overseer`. + #[cfg(not(feature = "real-overseer"))] + config.network.extra_sets.push(sc_network::config::NonDefaultSetConfig { + notifications_protocol: "/polkadot/collation/1".into(), + max_notification_size: 16, + set_config: sc_network::config::SetConfig { + in_peers: 25, + out_peers: 0, + reserved_nodes: Vec::new(), + non_reserved_mode: sc_network::config::NonReservedPeerMode::Accept, + }, + }); + // TODO: At the moment, the collator protocol uses notifications protocols to download // collations. Because of DoS-protection measures, notifications protocols have a very limited // bandwidth capacity, resulting in the collation download taking a long time. @@ -652,6 +666,28 @@ pub fn new_full( block_announce_validator_builder: None, })?; + // See above. We have added a dummy collation set with the intent of printing an error if one + // tries to connect a collator to a node that isn't compiled with `--features real-overseer`. + #[cfg(not(feature = "real-overseer"))] + task_manager.spawn_handle().spawn("dummy-collation-handler", { + let mut network_events = network.event_stream("dummy-collation-handler"); + async move { + use futures::prelude::*; + while let Some(ev) = network_events.next().await { + if let sc_network::Event::NotificationStreamOpened { protocol, .. } = ev { + if protocol == "/polkadot/collation/1" { + tracing::warn!( + "Incoming collator on a node with parachains disabled. This warning \ + is harmless and is here to warn developers that they might have + accidentally compiled their node without the `real-overseer` feature + enabled." + ); + } + } + } + } + }); + if config.offchain_worker.enabled { let _ = service::build_offchain_workers( &config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),