From 6f7886be8aab6c65eb3901db2fcf884c6e47b07b Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Mon, 22 May 2023 08:04:14 +0000 Subject: [PATCH] fix: make node build on 0.9.42 --- --- a/client/rpc/src/pov_estimate.rs +++ b/client/rpc/src/pov_estimate.rs @@ -213,12 +213,7 @@ let pre_root = *backend.root(); - let executor = NativeElseWasmExecutor::::new( - exec_params.wasm_method, - exec_params.default_heap_pages, - exec_params.max_runtime_instances, - exec_params.runtime_cache_size, - ); + let executor = sc_service::new_native_or_wasm_executor(exec_params); let execution = ExecutionStrategy::NativeElseWasm; let mut results = Vec::new(); --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -100,30 +100,8 @@ [features] default = ["opal-runtime"] -all-runtimes = [ - 'opal-runtime', - 'quartz-runtime', - 'unique-runtime', -] -pov-estimate = [ - 'opal-runtime/pov-estimate', - 'quartz-runtime?/pov-estimate', - 'uc-rpc/pov-estimate', - 'unique-rpc/pov-estimate', - 'unique-runtime?/pov-estimate', -] -runtime-benchmarks = [ - 'opal-runtime/runtime-benchmarks', - 'polkadot-cli/runtime-benchmarks', - 'polkadot-service/runtime-benchmarks', - 'quartz-runtime?/runtime-benchmarks', - 'sc-service/runtime-benchmarks', - 'unique-runtime?/runtime-benchmarks', -] +all-runtimes = ['opal-runtime', 'quartz-runtime', 'unique-runtime'] +pov-estimate = ['opal-runtime/pov-estimate', 'quartz-runtime?/pov-estimate', 'uc-rpc/pov-estimate', 'unique-rpc/pov-estimate', 'unique-runtime?/pov-estimate'] +runtime-benchmarks = ['opal-runtime/runtime-benchmarks', 'polkadot-cli/runtime-benchmarks', 'polkadot-service/runtime-benchmarks', 'quartz-runtime?/runtime-benchmarks', 'sc-service/runtime-benchmarks', 'unique-runtime?/runtime-benchmarks'] sapphire-runtime = ['quartz-runtime', 'quartz-runtime/become-sapphire'] -try-runtime = [ - 'opal-runtime?/try-runtime', - 'quartz-runtime?/try-runtime', - 'try-runtime-cli/try-runtime', - 'unique-runtime?/try-runtime', -] +try-runtime = ['opal-runtime?/try-runtime', 'quartz-runtime?/try-runtime', 'try-runtime-cli/try-runtime', 'unique-runtime?/try-runtime'] --- a/node/cli/src/command.rs +++ b/node/cli/src/command.rs @@ -505,7 +505,10 @@ let para_id = ParaId::from(para_id); - let parachain_account = AccountIdConversion::::into_account_truncating(¶_id); + let parachain_account = + AccountIdConversion::::into_account_truncating( + ¶_id, + ); let state_version = RelayChainCli::native_runtime_version(&config.chain_spec).state_version(); --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -26,6 +26,7 @@ stream::select, task::{Context, Poll}, }; +use sp_keystore::KeystorePtr; use tokio::time::Interval; use unique_rpc::overrides_handle; @@ -55,7 +56,6 @@ use sc_network_sync::SyncingService; use sc_service::{BasePath, Configuration, PartialComponents, TaskManager}; use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; -use sp_keystore::SyncCryptoStorePtr; use sp_runtime::traits::BlakeTwo256; use substrate_prometheus_endpoint::Registry; use sc_client_api::BlockchainEvents; @@ -270,12 +270,7 @@ }) .transpose()?; - let executor = NativeElseWasmExecutor::::new( - config.wasm_method, - config.default_heap_pages, - config.max_runtime_instances, - config.runtime_cache_size, - ); + let executor = sc_service::new_native_or_wasm_executor(config); let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( @@ -366,6 +361,14 @@ } } +macro_rules! clone { + ($($i:ident),* $(,)?) => { + $( + let $i = $i.clone(); + )* + }; +} + /// Start a node with the given parachain `Configuration` and relay chain `Configuration`. /// /// This is the actual implementation that is abstract over the executor and the runtime api. @@ -422,7 +425,7 @@ Arc, Arc>>, Arc>, - SyncCryptoStorePtr, + KeystorePtr, bool, ) -> Result>, sc_service::Error>, { @@ -469,13 +472,7 @@ warp_sync_params: None, })?; - let rpc_client = client.clone(); - let rpc_pool = transaction_pool.clone(); let select_chain = params.select_chain.clone(); - let rpc_network = network.clone(); - let rpc_sync_service = sync_service.clone(); - - let rpc_frontier_backend = frontier_backend.clone(); let block_data_cache = Arc::new(fc_rpc::EthBlockDataCacheTask::new( task_manager.spawn_handle(), @@ -485,9 +482,14 @@ prometheus_registry.clone(), )); + let pubsub_notification_sinks: fc_mapping_sync::EthereumBlockNotificationSinks< + fc_mapping_sync::EthereumBlockNotification, + > = Default::default(); + let pubsub_notification_sinks = Arc::new(pubsub_notification_sinks); + task_manager.spawn_essential_handle().spawn( "frontier-mapping-sync-worker", - None, + Some("frontier"), MappingSyncWorker::new( client.import_notification_stream(), Duration::new(6, 0), @@ -498,55 +500,83 @@ 3, 0, SyncStrategy::Normal, + sync_service.clone(), + pubsub_notification_sinks.clone(), ) .for_each(|()| futures::future::ready(())), ); - #[cfg(feature = "pov-estimate")] - let rpc_backend = backend.clone(); + let runtime_id = parachain_config.chain_spec.runtime_id(); + + let rpc_builder = Box::new({ + clone!( + client, + backend, + pubsub_notification_sinks, + transaction_pool, + network, + sync_service, + frontier_backend, + ); + move |deny_unsafe, subscription_task_executor| { + clone!( + backend, + runtime_id, + client, + transaction_pool, + filter_pool, + network, + select_chain, + block_data_cache, + fee_history_cache, + pubsub_notification_sinks, + frontier_backend, + ); - let runtime_id = parachain_config.chain_spec.runtime_id(); + #[cfg(not(feature = "pov-estimate"))] + let _ = backend; - let rpc_builder = Box::new(move |deny_unsafe, subscription_task_executor| { - let full_deps = unique_rpc::FullDeps { - runtime_id: runtime_id.clone(), + let full_deps = unique_rpc::FullDeps { + runtime_id, - #[cfg(feature = "pov-estimate")] - exec_params: uc_rpc::pov_estimate::ExecutorParams { - wasm_method: parachain_config.wasm_method, - default_heap_pages: parachain_config.default_heap_pages, - max_runtime_instances: parachain_config.max_runtime_instances, - runtime_cache_size: parachain_config.runtime_cache_size, - }, + #[cfg(feature = "pov-estimate")] + exec_params: uc_rpc::pov_estimate::ExecutorParams { + wasm_method: parachain_config.wasm_method, + default_heap_pages: parachain_config.default_heap_pages, + max_runtime_instances: parachain_config.max_runtime_instances, + runtime_cache_size: parachain_config.runtime_cache_size, + }, - #[cfg(feature = "pov-estimate")] - backend: rpc_backend.clone(), + #[cfg(feature = "pov-estimate")] + backend, - eth_backend: rpc_frontier_backend.clone(), - deny_unsafe, - client: rpc_client.clone(), - pool: rpc_pool.clone(), - graph: rpc_pool.pool().clone(), - // TODO: Unhardcode - enable_dev_signer: false, - filter_pool: filter_pool.clone(), - network: rpc_network.clone(), - sync: rpc_sync_service.clone(), - select_chain: select_chain.clone(), - is_authority: validator, - // TODO: Unhardcode - max_past_logs: 10000, - block_data_cache: block_data_cache.clone(), - fee_history_cache: fee_history_cache.clone(), - // TODO: Unhardcode - fee_history_limit: 2048, - }; + eth_backend: frontier_backend, + deny_unsafe, + client, + graph: transaction_pool.pool().clone(), + pool: transaction_pool, + // TODO: Unhardcode + enable_dev_signer: false, + filter_pool, + network, + sync: sync_service.clone(), + select_chain, + is_authority: validator, + // TODO: Unhardcode + max_past_logs: 10000, + block_data_cache, + fee_history_cache, + // TODO: Unhardcode + fee_history_limit: 2048, + pubsub_notification_sinks, + }; - unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>( - full_deps, - subscription_task_executor, - ) - .map_err(Into::into) + unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>( + full_deps, + subscription_task_executor, + ) + .map_err(Into::into) + } }); sc_service::spawn_tasks(sc_service::SpawnTasksParams { @@ -555,7 +585,7 @@ transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, config: parachain_config, - keystore: params.keystore_container.sync_keystore(), + keystore: params.keystore_container.keystore(), backend: backend.clone(), network: network.clone(), sync_service: sync_service.clone(), @@ -600,7 +630,7 @@ relay_chain_interface.clone(), transaction_pool, sync_service.clone(), - params.keystore_container.sync_keystore(), + params.keystore_container.keystore(), force_authoring, )?; @@ -619,6 +649,7 @@ relay_chain_interface, relay_chain_slot_duration, recovery_handle: Box::new(overseer_handle), + sync_service, }; start_collator(params).await?; @@ -632,6 +663,7 @@ relay_chain_interface, relay_chain_slot_duration, recovery_handle: Box::new(overseer_handle), + sync_service, }; start_full_node(params)?; @@ -897,6 +929,11 @@ prometheus_registry.clone(), )); + let pubsub_notification_sinks: fc_mapping_sync::EthereumBlockNotificationSinks< + fc_mapping_sync::EthereumBlockNotification, + > = Default::default(); + let pubsub_notification_sinks = Arc::new(pubsub_notification_sinks); + let (network, system_rpc_tx, tx_handler_controller, network_starter, sync_service) = sc_service::build_network(sc_service::BuildNetworkParams { config: &config, @@ -1026,67 +1063,88 @@ 3, 0, SyncStrategy::Normal, + sync_service.clone(), + pubsub_notification_sinks.clone(), ) .for_each(|()| futures::future::ready(())), ); - - let rpc_client = client.clone(); - let rpc_pool = transaction_pool.clone(); - let rpc_network = network.clone(); - let rpc_sync_service = sync_service.clone(); - let rpc_frontier_backend = frontier_backend.clone(); #[cfg(feature = "pov-estimate")] let rpc_backend = backend.clone(); let runtime_id = config.chain_spec.runtime_id(); - let rpc_builder = Box::new(move |deny_unsafe, subscription_executor| { - let full_deps = unique_rpc::FullDeps { - runtime_id: runtime_id.clone(), + let rpc_builder = Box::new({ + clone!( + backend, + client, + sync_service, + frontier_backend, + network, + transaction_pool, + pubsub_notification_sinks + ); + move |deny_unsafe, subscription_executor| { + clone!( + backend, + block_data_cache, + client, + fee_history_cache, + filter_pool, + network, + pubsub_notification_sinks, + ); + + #[cfg(not(feature = "pov-estimate"))] + let _ = backend; + + let full_deps = unique_rpc::FullDeps { + runtime_id: runtime_id.clone(), - #[cfg(feature = "pov-estimate")] - exec_params: uc_rpc::pov_estimate::ExecutorParams { - wasm_method: config.wasm_method, - default_heap_pages: config.default_heap_pages, - max_runtime_instances: config.max_runtime_instances, - runtime_cache_size: config.runtime_cache_size, - }, + #[cfg(feature = "pov-estimate")] + exec_params: uc_rpc::pov_estimate::ExecutorParams { + wasm_method: config.wasm_method, + default_heap_pages: config.default_heap_pages, + max_runtime_instances: config.max_runtime_instances, + runtime_cache_size: config.runtime_cache_size, + }, - #[cfg(feature = "pov-estimate")] - backend: rpc_backend.clone(), - eth_backend: rpc_frontier_backend.clone(), - deny_unsafe, - client: rpc_client.clone(), - pool: rpc_pool.clone(), - graph: rpc_pool.pool().clone(), - // TODO: Unhardcode - enable_dev_signer: false, - filter_pool: filter_pool.clone(), - network: rpc_network.clone(), - sync: rpc_sync_service.clone(), - select_chain: select_chain.clone(), - is_authority: collator, - // TODO: Unhardcode - max_past_logs: 10000, - block_data_cache: block_data_cache.clone(), - fee_history_cache: fee_history_cache.clone(), - // TODO: Unhardcode - fee_history_limit: 2048, - }; + #[cfg(feature = "pov-estimate")] + backend, + eth_backend: frontier_backend.clone(), + deny_unsafe, + client, + pool: transaction_pool.clone(), + graph: transaction_pool.pool().clone(), + // TODO: Unhardcode + enable_dev_signer: false, + filter_pool, + network, + sync: sync_service.clone(), + select_chain: select_chain.clone(), + is_authority: collator, + // TODO: Unhardcode + max_past_logs: 10000, + block_data_cache, + fee_history_cache, + // TODO: Unhardcode + fee_history_limit: 2048, + pubsub_notification_sinks, + }; - unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>( - full_deps, - subscription_executor, - ) - .map_err(Into::into) + unique_rpc::create_full::<_, _, _, _, Runtime, RuntimeApi, _>( + full_deps, + subscription_executor, + ) + .map_err(Into::into) + } }); sc_service::spawn_tasks(sc_service::SpawnTasksParams { network, sync_service, client, - keystore: keystore_container.sync_keystore(), + keystore: keystore_container.keystore(), task_manager: &mut task_manager, transaction_pool, rpc_builder, --- a/node/rpc/Cargo.toml +++ b/node/rpc/Cargo.toml @@ -30,6 +30,7 @@ fc-db = { workspace = true } fc-rpc = { workspace = true } fc-rpc-core = { workspace = true } +fc-mapping-sync = { workspace = true } fp-rpc = { workspace = true } fp-storage = { workspace = true } --- a/node/rpc/src/lib.rs +++ b/node/rpc/src/lib.rs @@ -102,6 +102,12 @@ pub fee_history_cache: FeeHistoryCache, /// Cache for Ethereum block data. pub block_data_cache: Arc>, + + pub pubsub_notification_sinks: Arc< + fc_mapping_sync::EthereumBlockNotificationSinks< + fc_mapping_sync::EthereumBlockNotification, + >, + >, } pub fn overrides_handle(client: Arc) -> Arc> @@ -214,6 +220,7 @@ eth_backend, max_past_logs, + pubsub_notification_sinks, } = deps; io.merge(System::new(Arc::clone(&client), Arc::clone(&pool), deny_unsafe).into_rpc())?; @@ -244,6 +251,7 @@ fee_history_cache, fee_history_limit, execute_gas_limit_multiplier, + None, ) .into_rpc(), )?; @@ -290,7 +298,17 @@ io.merge(Web3::new(client.clone()).into_rpc())?; - io.merge(EthPubSub::new(pool, client, sync, subscription_task_executor, overrides).into_rpc())?; + io.merge( + EthPubSub::new( + pool, + client, + sync, + subscription_task_executor, + overrides, + pubsub_notification_sinks, + ) + .into_rpc(), + )?; Ok(io) } -- gitstuff