mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 16:57:58 +00:00
Telemetry per node (#7463)
This commit is contained in:
@@ -21,9 +21,8 @@ use log::info;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use browser_utils::{
|
||||
Client,
|
||||
browser_configuration, set_console_error_panic_hook, init_console_log,
|
||||
browser_configuration, init_logging_and_telemetry, set_console_error_panic_hook,
|
||||
};
|
||||
use std::str::FromStr;
|
||||
|
||||
/// Starts the client.
|
||||
#[wasm_bindgen]
|
||||
@@ -33,20 +32,27 @@ pub async fn start_client(chain_spec: Option<String>, log_level: String) -> Resu
|
||||
.map_err(|err| JsValue::from_str(&err.to_string()))
|
||||
}
|
||||
|
||||
async fn start_inner(chain_spec: Option<String>, log_level: String) -> Result<Client, Box<dyn std::error::Error>> {
|
||||
async fn start_inner(
|
||||
chain_spec: Option<String>,
|
||||
log_directives: String,
|
||||
) -> Result<Client, Box<dyn std::error::Error>> {
|
||||
set_console_error_panic_hook();
|
||||
init_console_log(log::Level::from_str(&log_level)?)?;
|
||||
let telemetry_worker = init_logging_and_telemetry(&log_directives)?;
|
||||
let chain_spec = match chain_spec {
|
||||
Some(chain_spec) => ChainSpec::from_json_bytes(chain_spec.as_bytes().to_vec())
|
||||
.map_err(|e| format!("{:?}", e))?,
|
||||
None => crate::chain_spec::development_config(),
|
||||
};
|
||||
|
||||
let config = browser_configuration(chain_spec).await?;
|
||||
let telemetry_handle = telemetry_worker.handle();
|
||||
let config = browser_configuration(
|
||||
chain_spec,
|
||||
Some(telemetry_handle),
|
||||
).await?;
|
||||
|
||||
info!("Substrate browser node");
|
||||
info!("✌️ version {}", config.impl_version);
|
||||
info!("❤️ by Parity Technologies, 2017-2020");
|
||||
info!("❤️ by Parity Technologies, 2017-2021");
|
||||
info!("📋 Chain specification: {}", config.chain_spec.name());
|
||||
info!("🏷 Node name: {}", config.network.node_name);
|
||||
info!("👤 Role: {:?}", config.role);
|
||||
@@ -54,8 +60,10 @@ async fn start_inner(chain_spec: Option<String>, log_level: String) -> Result<Cl
|
||||
// Create the service. This is the most heavy initialization step.
|
||||
let (task_manager, rpc_handlers) =
|
||||
crate::service::new_light_base(config)
|
||||
.map(|(components, rpc_handlers, _, _, _)| (components, rpc_handlers))
|
||||
.map(|(components, rpc_handlers, _, _, _, _)| (components, rpc_handlers))
|
||||
.map_err(|e| format!("{:?}", e))?;
|
||||
|
||||
task_manager.spawn_handle().spawn("telemetry", telemetry_worker.run());
|
||||
|
||||
Ok(browser_utils::start_client(task_manager, rpc_handlers))
|
||||
}
|
||||
|
||||
@@ -441,7 +441,7 @@ pub(crate) mod tests {
|
||||
Ok(sc_service_test::TestNetComponents::new(task_manager, client, network, transaction_pool))
|
||||
},
|
||||
|config| {
|
||||
let (keep_alive, _, client, network, transaction_pool) = new_light_base(config)?;
|
||||
let (keep_alive, _, _, client, network, transaction_pool) = new_light_base(config)?;
|
||||
Ok(sc_service_test::TestNetComponents::new(keep_alive, client, network, transaction_pool))
|
||||
}
|
||||
);
|
||||
|
||||
@@ -34,6 +34,7 @@ use sp_runtime::traits::Block as BlockT;
|
||||
use futures::prelude::*;
|
||||
use sc_client_api::{ExecutorProvider, RemoteBackend};
|
||||
use node_executor::Executor;
|
||||
use sc_telemetry::{TelemetryConnectionNotifier, TelemetrySpan};
|
||||
|
||||
type FullClient = sc_service::TFullClient<Block, RuntimeApi, Executor>;
|
||||
type FullBackend = sc_service::TFullBackend<Block>;
|
||||
@@ -57,9 +58,10 @@ pub fn new_partial(config: &Configuration) -> Result<sc_service::PartialComponen
|
||||
sc_consensus_babe::BabeLink<Block>,
|
||||
),
|
||||
grandpa::SharedVoterState,
|
||||
Option<TelemetrySpan>,
|
||||
)
|
||||
>, ServiceError> {
|
||||
let (client, backend, keystore_container, task_manager) =
|
||||
let (client, backend, keystore_container, task_manager, telemetry_span) =
|
||||
sc_service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
|
||||
let client = Arc::new(client);
|
||||
|
||||
@@ -147,9 +149,15 @@ pub fn new_partial(config: &Configuration) -> Result<sc_service::PartialComponen
|
||||
};
|
||||
|
||||
Ok(sc_service::PartialComponents {
|
||||
client, backend, task_manager, keystore_container,
|
||||
select_chain, import_queue, transaction_pool, inherent_data_providers,
|
||||
other: (rpc_extensions_builder, import_setup, rpc_setup)
|
||||
client,
|
||||
backend,
|
||||
task_manager,
|
||||
keystore_container,
|
||||
select_chain,
|
||||
import_queue,
|
||||
transaction_pool,
|
||||
inherent_data_providers,
|
||||
other: (rpc_extensions_builder, import_setup, rpc_setup, telemetry_span),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -171,9 +179,15 @@ pub fn new_full_base(
|
||||
)
|
||||
) -> Result<NewFullBase, ServiceError> {
|
||||
let sc_service::PartialComponents {
|
||||
client, backend, mut task_manager, import_queue, keystore_container,
|
||||
select_chain, transaction_pool, inherent_data_providers,
|
||||
other: (rpc_extensions_builder, import_setup, rpc_setup),
|
||||
client,
|
||||
backend,
|
||||
mut task_manager,
|
||||
import_queue,
|
||||
keystore_container,
|
||||
select_chain,
|
||||
transaction_pool,
|
||||
inherent_data_providers,
|
||||
other: (rpc_extensions_builder, import_setup, rpc_setup, telemetry_span),
|
||||
} = new_partial(&config)?;
|
||||
|
||||
let shared_voter_state = rpc_setup;
|
||||
@@ -204,23 +218,24 @@ pub fn new_full_base(
|
||||
let name = config.network.node_name.clone();
|
||||
let enable_grandpa = !config.disable_grandpa;
|
||||
let prometheus_registry = config.prometheus_registry().cloned();
|
||||
let telemetry_connection_sinks = sc_service::TelemetryConnectionSinks::default();
|
||||
|
||||
sc_service::spawn_tasks(sc_service::SpawnTasksParams {
|
||||
config,
|
||||
backend: backend.clone(),
|
||||
client: client.clone(),
|
||||
keystore: keystore_container.sync_keystore(),
|
||||
network: network.clone(),
|
||||
rpc_extensions_builder: Box::new(rpc_extensions_builder),
|
||||
transaction_pool: transaction_pool.clone(),
|
||||
task_manager: &mut task_manager,
|
||||
on_demand: None,
|
||||
remote_blockchain: None,
|
||||
telemetry_connection_sinks: telemetry_connection_sinks.clone(),
|
||||
network_status_sinks: network_status_sinks.clone(),
|
||||
system_rpc_tx,
|
||||
})?;
|
||||
let (_rpc_handlers, telemetry_connection_notifier) = sc_service::spawn_tasks(
|
||||
sc_service::SpawnTasksParams {
|
||||
config,
|
||||
backend: backend.clone(),
|
||||
client: client.clone(),
|
||||
keystore: keystore_container.sync_keystore(),
|
||||
network: network.clone(),
|
||||
rpc_extensions_builder: Box::new(rpc_extensions_builder),
|
||||
transaction_pool: transaction_pool.clone(),
|
||||
task_manager: &mut task_manager,
|
||||
on_demand: None,
|
||||
remote_blockchain: None,
|
||||
network_status_sinks: network_status_sinks.clone(),
|
||||
system_rpc_tx,
|
||||
telemetry_span,
|
||||
},
|
||||
)?;
|
||||
|
||||
let (block_import, grandpa_link, babe_link) = import_setup;
|
||||
|
||||
@@ -305,7 +320,7 @@ pub fn new_full_base(
|
||||
config,
|
||||
link: grandpa_link,
|
||||
network: network.clone(),
|
||||
telemetry_on_connect: Some(telemetry_connection_sinks.on_connect_stream()),
|
||||
telemetry_on_connect: telemetry_connection_notifier.map(|x| x.on_connect_stream()),
|
||||
voting_rule: grandpa::VotingRulesBuilder::default().build(),
|
||||
prometheus_registry,
|
||||
shared_voter_state,
|
||||
@@ -339,11 +354,11 @@ pub fn new_full(config: Configuration)
|
||||
}
|
||||
|
||||
pub fn new_light_base(mut config: Configuration) -> Result<(
|
||||
TaskManager, RpcHandlers, Arc<LightClient>,
|
||||
TaskManager, RpcHandlers, Option<TelemetryConnectionNotifier>, Arc<LightClient>,
|
||||
Arc<NetworkService<Block, <Block as BlockT>::Hash>>,
|
||||
Arc<sc_transaction_pool::LightPool<Block, LightClient, sc_network::config::OnDemand<Block>>>
|
||||
), ServiceError> {
|
||||
let (client, backend, keystore_container, mut task_manager, on_demand) =
|
||||
let (client, backend, keystore_container, mut task_manager, on_demand, telemetry_span) =
|
||||
sc_service::new_light_parts::<Block, RuntimeApi, Executor>(&config)?;
|
||||
|
||||
config.network.extra_sets.push(grandpa::grandpa_peers_set_config());
|
||||
@@ -412,7 +427,7 @@ pub fn new_light_base(mut config: Configuration) -> Result<(
|
||||
|
||||
let rpc_extensions = node_rpc::create_light(light_deps);
|
||||
|
||||
let rpc_handlers =
|
||||
let (rpc_handlers, telemetry_connection_notifier) =
|
||||
sc_service::spawn_tasks(sc_service::SpawnTasksParams {
|
||||
on_demand: Some(on_demand),
|
||||
remote_blockchain: Some(backend.remote_blockchain()),
|
||||
@@ -422,16 +437,23 @@ pub fn new_light_base(mut config: Configuration) -> Result<(
|
||||
keystore: keystore_container.sync_keystore(),
|
||||
config, backend, network_status_sinks, system_rpc_tx,
|
||||
network: network.clone(),
|
||||
telemetry_connection_sinks: sc_service::TelemetryConnectionSinks::default(),
|
||||
task_manager: &mut task_manager,
|
||||
telemetry_span,
|
||||
})?;
|
||||
|
||||
Ok((task_manager, rpc_handlers, client, network, transaction_pool))
|
||||
Ok((
|
||||
task_manager,
|
||||
rpc_handlers,
|
||||
telemetry_connection_notifier,
|
||||
client,
|
||||
network,
|
||||
transaction_pool,
|
||||
))
|
||||
}
|
||||
|
||||
/// Builds a new service for a light client.
|
||||
pub fn new_light(config: Configuration) -> Result<TaskManager, ServiceError> {
|
||||
new_light_base(config).map(|(task_manager, _, _, _, _)| {
|
||||
new_light_base(config).map(|(task_manager, _, _, _, _, _)| {
|
||||
task_manager
|
||||
})
|
||||
}
|
||||
@@ -513,7 +535,7 @@ mod tests {
|
||||
Ok((node, (inherent_data_providers, setup_handles.unwrap())))
|
||||
},
|
||||
|config| {
|
||||
let (keep_alive, _, client, network, transaction_pool) = new_light_base(config)?;
|
||||
let (keep_alive, _, _, client, network, transaction_pool) = new_light_base(config)?;
|
||||
Ok(sc_service_test::TestNetComponents::new(keep_alive, client, network, transaction_pool))
|
||||
},
|
||||
|service, &mut (ref inherent_data_providers, (ref mut block_import, ref babe_link))| {
|
||||
@@ -671,7 +693,7 @@ mod tests {
|
||||
Ok(sc_service_test::TestNetComponents::new(task_manager, client, network, transaction_pool))
|
||||
},
|
||||
|config| {
|
||||
let (keep_alive, _, client, network, transaction_pool) = new_light_base(config)?;
|
||||
let (keep_alive, _, _, client, network, transaction_pool) = new_light_base(config)?;
|
||||
Ok(sc_service_test::TestNetComponents::new(keep_alive, client, network, transaction_pool))
|
||||
},
|
||||
vec![
|
||||
|
||||
Reference in New Issue
Block a user