Skip to content

Commit c8718f5

Browse files
committed
Improve service building API by requiring specific configuration options, introduce sc_service::config::RpcConfiguration to replace a bunch of flat fields
1 parent e4f8a6d commit c8718f5

File tree

18 files changed

+264
-207
lines changed

18 files changed

+264
-207
lines changed

cumulus/client/relay-chain-minimal-node/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ async fn new_minimal_relay_chain<Block: BlockT, Network: NetworkBackend<RelayBlo
175175
collator_pair: CollatorPair,
176176
relay_chain_rpc_client: Arc<BlockChainRpcClient>,
177177
) -> Result<NewMinimalNode, RelayChainError> {
178-
let role = config.role.clone();
178+
let role = config.role;
179179
let mut net_config = sc_network::config::FullNetworkConfiguration::<_, _, Network>::new(
180180
&config.network,
181181
config.prometheus_config.as_ref().map(|cfg| cfg.registry.clone()),

cumulus/client/relay-chain-minimal-node/src/network.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ pub(crate) fn build_collator_network<Network: NetworkBackend<Block, Hash>>(
6565
spawn_handle.spawn("peer-store", Some("networking"), peer_store.run());
6666

6767
let network_params = sc_network::config::Params::<Block, Hash, Network> {
68-
role: config.role.clone(),
68+
role: config.role,
6969
executor: {
7070
let spawn_handle = Clone::clone(&spawn_handle);
7171
Box::new(move |fut| {

cumulus/test/service/src/lib.rs

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ use sc_network::{
7979
use sc_service::{
8080
config::{
8181
BlocksPruning, DatabaseSource, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration,
82-
OffchainWorkerConfig, PruningMode, RpcBatchRequestConfig, WasmExecutionMethod,
82+
OffchainWorkerConfig, PruningMode, RpcBatchRequestConfig, RpcConfiguration,
83+
WasmExecutionMethod,
8384
},
8485
BasePath, ChainSpec as ChainSpecService, Configuration, Error as ServiceError,
8586
PartialComponents, Role, RpcHandlers, TFullBackend, TFullClient, TaskManager,
@@ -866,20 +867,22 @@ pub fn node_config(
866867
wasm_method: WasmExecutionMethod::Compiled {
867868
instantiation_strategy: sc_executor_wasmtime::InstantiationStrategy::PoolingCopyOnWrite,
868869
},
869-
rpc_addr: None,
870-
rpc_max_connections: Default::default(),
871-
rpc_cors: None,
872-
rpc_methods: Default::default(),
873-
rpc_max_request_size: Default::default(),
874-
rpc_max_response_size: Default::default(),
875-
rpc_id_provider: None,
876-
rpc_max_subs_per_conn: Default::default(),
877-
rpc_port: 9945,
878-
rpc_message_buffer_capacity: Default::default(),
879-
rpc_batch_config: RpcBatchRequestConfig::Unlimited,
880-
rpc_rate_limit: None,
881-
rpc_rate_limit_whitelisted_ips: Default::default(),
882-
rpc_rate_limit_trust_proxy_headers: Default::default(),
870+
rpc: RpcConfiguration {
871+
addr: None,
872+
max_connections: Default::default(),
873+
cors: None,
874+
methods: Default::default(),
875+
max_request_size: Default::default(),
876+
max_response_size: Default::default(),
877+
id_provider: None,
878+
max_subs_per_conn: Default::default(),
879+
port: 9945,
880+
message_buffer_capacity: Default::default(),
881+
batch_config: RpcBatchRequestConfig::Unlimited,
882+
rate_limit: None,
883+
rate_limit_whitelisted_ips: Default::default(),
884+
rate_limit_trust_proxy_headers: Default::default(),
885+
},
883886
prometheus_config: None,
884887
telemetry_endpoints: None,
885888
default_heap_pages: None,
@@ -1006,7 +1009,7 @@ pub fn run_relay_chain_validator_node(
10061009
);
10071010

10081011
if let Some(port) = port {
1009-
config.rpc_addr = Some(SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), port));
1012+
config.rpc.addr = Some(SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), port));
10101013
}
10111014

10121015
let mut workers_path = std::env::current_exe().unwrap();

polkadot/node/service/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ pub fn new_full<
767767
use sc_network_sync::WarpSyncParams;
768768

769769
let is_offchain_indexing_enabled = config.offchain_worker.indexing_enabled;
770-
let role = config.role.clone();
770+
let role = config.role;
771771
let force_authoring = config.force_authoring;
772772
let backoff_authoring_blocks = if !force_authoring_backoff &&
773773
(config.chain_spec.is_polkadot() || config.chain_spec.is_kusama())

polkadot/node/test/service/src/lib.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ use substrate_test_client::{
6868
pub type Client = FullClient;
6969

7070
pub use polkadot_service::{FullBackend, GetLastTimestamp};
71+
use sc_service::config::RpcConfiguration;
7172

7273
/// Create a new full node.
7374
#[sc_tracing::logging::prefix_logs_with(config.network.node_name.as_str())]
@@ -204,20 +205,22 @@ pub fn node_config(
204205
instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite,
205206
},
206207
wasm_runtime_overrides: Default::default(),
207-
rpc_addr: Default::default(),
208-
rpc_max_request_size: Default::default(),
209-
rpc_max_response_size: Default::default(),
210-
rpc_max_connections: Default::default(),
211-
rpc_cors: None,
212-
rpc_methods: Default::default(),
213-
rpc_id_provider: None,
214-
rpc_max_subs_per_conn: Default::default(),
215-
rpc_port: 9944,
216-
rpc_message_buffer_capacity: Default::default(),
217-
rpc_batch_config: RpcBatchRequestConfig::Unlimited,
218-
rpc_rate_limit: None,
219-
rpc_rate_limit_whitelisted_ips: Default::default(),
220-
rpc_rate_limit_trust_proxy_headers: Default::default(),
208+
rpc: RpcConfiguration {
209+
addr: Default::default(),
210+
max_request_size: Default::default(),
211+
max_response_size: Default::default(),
212+
max_connections: Default::default(),
213+
cors: None,
214+
methods: Default::default(),
215+
id_provider: None,
216+
max_subs_per_conn: Default::default(),
217+
port: 9944,
218+
message_buffer_capacity: Default::default(),
219+
batch_config: RpcBatchRequestConfig::Unlimited,
220+
rate_limit: None,
221+
rate_limit_whitelisted_ips: Default::default(),
222+
rate_limit_trust_proxy_headers: Default::default(),
223+
},
221224
prometheus_config: None,
222225
telemetry_endpoints: None,
223226
default_heap_pages: None,

substrate/bin/node/cli/benches/block_production.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use criterion::{criterion_group, criterion_main, BatchSize, Criterion, Throughpu
2222

2323
use kitchensink_runtime::{constants::currency::*, BalancesCall};
2424
use node_cli::service::{create_extrinsic, FullClient};
25+
use polkadot_sdk::sc_service::config::RpcConfiguration;
2526
use sc_block_builder::{BlockBuilderBuilder, BuiltBlock};
2627
use sc_consensus::{
2728
block_import::{BlockImportParams, ForkChoiceStrategy},
@@ -76,20 +77,22 @@ fn new_node(tokio_handle: Handle) -> node_cli::service::NewFullBase {
7677
wasm_method: WasmExecutionMethod::Compiled {
7778
instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite,
7879
},
79-
rpc_addr: None,
80-
rpc_max_connections: Default::default(),
81-
rpc_cors: None,
82-
rpc_methods: Default::default(),
83-
rpc_max_request_size: Default::default(),
84-
rpc_max_response_size: Default::default(),
85-
rpc_id_provider: Default::default(),
86-
rpc_max_subs_per_conn: Default::default(),
87-
rpc_port: 9944,
88-
rpc_message_buffer_capacity: Default::default(),
89-
rpc_batch_config: RpcBatchRequestConfig::Unlimited,
90-
rpc_rate_limit: None,
91-
rpc_rate_limit_whitelisted_ips: Default::default(),
92-
rpc_rate_limit_trust_proxy_headers: Default::default(),
80+
rpc: RpcConfiguration {
81+
addr: None,
82+
max_connections: Default::default(),
83+
cors: None,
84+
methods: Default::default(),
85+
max_request_size: Default::default(),
86+
max_response_size: Default::default(),
87+
id_provider: Default::default(),
88+
max_subs_per_conn: Default::default(),
89+
port: 9944,
90+
message_buffer_capacity: Default::default(),
91+
batch_config: RpcBatchRequestConfig::Unlimited,
92+
rate_limit: None,
93+
rate_limit_whitelisted_ips: Default::default(),
94+
rate_limit_trust_proxy_headers: Default::default(),
95+
},
9396
prometheus_config: None,
9497
telemetry_endpoints: None,
9598
default_heap_pages: None,

substrate/bin/node/cli/benches/transaction_pool.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ use futures::{future, StreamExt};
2424
use kitchensink_runtime::{constants::currency::*, BalancesCall, SudoCall};
2525
use node_cli::service::{create_extrinsic, fetch_nonce, FullClient, TransactionPool};
2626
use node_primitives::AccountId;
27+
use polkadot_sdk::sc_service::config::RpcConfiguration;
2728
use sc_service::{
2829
config::{
2930
BlocksPruning, DatabaseSource, KeystoreConfig, NetworkConfiguration, OffchainWorkerConfig,
@@ -71,20 +72,22 @@ fn new_node(tokio_handle: Handle) -> node_cli::service::NewFullBase {
7172
blocks_pruning: BlocksPruning::KeepAll,
7273
chain_spec: spec,
7374
wasm_method: Default::default(),
74-
rpc_addr: None,
75-
rpc_max_connections: Default::default(),
76-
rpc_cors: None,
77-
rpc_methods: Default::default(),
78-
rpc_max_request_size: Default::default(),
79-
rpc_max_response_size: Default::default(),
80-
rpc_id_provider: Default::default(),
81-
rpc_max_subs_per_conn: Default::default(),
82-
rpc_port: 9944,
83-
rpc_message_buffer_capacity: Default::default(),
84-
rpc_batch_config: RpcBatchRequestConfig::Unlimited,
85-
rpc_rate_limit: None,
86-
rpc_rate_limit_whitelisted_ips: Default::default(),
87-
rpc_rate_limit_trust_proxy_headers: Default::default(),
75+
rpc: RpcConfiguration {
76+
addr: None,
77+
max_connections: Default::default(),
78+
cors: None,
79+
methods: Default::default(),
80+
max_request_size: Default::default(),
81+
max_response_size: Default::default(),
82+
id_provider: Default::default(),
83+
max_subs_per_conn: Default::default(),
84+
port: 9944,
85+
message_buffer_capacity: Default::default(),
86+
batch_config: RpcBatchRequestConfig::Unlimited,
87+
rate_limit: None,
88+
rate_limit_whitelisted_ips: Default::default(),
89+
rate_limit_trust_proxy_headers: Default::default(),
90+
},
8891
prometheus_config: None,
8992
telemetry_endpoints: None,
9093
default_heap_pages: None,

substrate/bin/node/cli/src/service.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ pub fn new_full_base<N: NetworkBackend<Block, <Block as BlockT>::Hash>>(
406406
),
407407
) -> Result<NewFullBase, ServiceError> {
408408
let is_offchain_indexing_enabled = config.offchain_worker.indexing_enabled;
409-
let role = config.role.clone();
409+
let role = config.role;
410410
let force_authoring = config.force_authoring;
411411
let backoff_authoring_blocks =
412412
Some(sc_consensus_slots::BackoffAuthoringOnFinalizedHeadLagging::default());

substrate/client/cli/src/config.rs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ use sc_service::{
2828
config::{
2929
BasePath, Configuration, DatabaseSource, IpNetwork, KeystoreConfig, NetworkConfiguration,
3030
NodeKeyConfig, OffchainWorkerConfig, PrometheusConfig, PruningMode, Role,
31-
RpcBatchRequestConfig, RpcMethods, TelemetryEndpoints, TransactionPoolOptions,
32-
WasmExecutionMethod,
31+
RpcBatchRequestConfig, RpcConfiguration, RpcMethods, TelemetryEndpoints,
32+
TransactionPoolOptions, WasmExecutionMethod,
3333
},
3434
BlocksPruning, ChainSpec, TracingReceiver,
3535
};
@@ -527,20 +527,22 @@ pub trait CliConfiguration<DCV: DefaultConfigurationValues = ()>: Sized {
527527
blocks_pruning: self.blocks_pruning()?,
528528
wasm_method: self.wasm_method()?,
529529
wasm_runtime_overrides: self.wasm_runtime_overrides(),
530-
rpc_addr: self.rpc_addr(DCV::rpc_listen_port())?,
531-
rpc_methods: self.rpc_methods()?,
532-
rpc_max_connections: self.rpc_max_connections()?,
533-
rpc_cors: self.rpc_cors(is_dev)?,
534-
rpc_max_request_size: self.rpc_max_request_size()?,
535-
rpc_max_response_size: self.rpc_max_response_size()?,
536-
rpc_id_provider: None,
537-
rpc_max_subs_per_conn: self.rpc_max_subscriptions_per_connection()?,
538-
rpc_port: DCV::rpc_listen_port(),
539-
rpc_message_buffer_capacity: self.rpc_buffer_capacity_per_connection()?,
540-
rpc_batch_config: self.rpc_batch_config()?,
541-
rpc_rate_limit: self.rpc_rate_limit()?,
542-
rpc_rate_limit_whitelisted_ips: self.rpc_rate_limit_whitelisted_ips()?,
543-
rpc_rate_limit_trust_proxy_headers: self.rpc_rate_limit_trust_proxy_headers()?,
530+
rpc: RpcConfiguration {
531+
addr: self.rpc_addr(DCV::rpc_listen_port())?,
532+
methods: self.rpc_methods()?,
533+
max_connections: self.rpc_max_connections()?,
534+
cors: self.rpc_cors(is_dev)?,
535+
max_request_size: self.rpc_max_request_size()?,
536+
max_response_size: self.rpc_max_response_size()?,
537+
id_provider: None,
538+
max_subs_per_conn: self.rpc_max_subscriptions_per_connection()?,
539+
port: DCV::rpc_listen_port(),
540+
message_buffer_capacity: self.rpc_buffer_capacity_per_connection()?,
541+
batch_config: self.rpc_batch_config()?,
542+
rate_limit: self.rpc_rate_limit()?,
543+
rate_limit_whitelisted_ips: self.rpc_rate_limit_whitelisted_ips()?,
544+
rate_limit_trust_proxy_headers: self.rpc_rate_limit_trust_proxy_headers()?,
545+
},
544546
prometheus_config: self
545547
.prometheus_config(DCV::prometheus_listen_port(), &chain_spec)?,
546548
telemetry_endpoints,

substrate/client/cli/src/params/node_key_params.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ impl NodeKeyParams {
116116
.clone()
117117
.unwrap_or_else(|| net_config_dir.join(NODE_KEY_ED25519_FILE));
118118
if !self.unsafe_force_node_key_generation &&
119-
role.is_authority() && !is_dev &&
120-
!key_path.exists()
119+
role.is_authority() &&
120+
!is_dev && !key_path.exists()
121121
{
122122
return Err(Error::NetworkKeyNotFound(key_path))
123123
}
@@ -237,7 +237,6 @@ mod tests {
237237
|params| {
238238
let dir = PathBuf::from(net_config_dir.clone());
239239
let typ = params.node_key_type;
240-
let role = role.clone();
241240
params.node_key(net_config_dir, role, is_dev).and_then(move |c| match c {
242241
NodeKeyConfig::Ed25519(sc_network::config::Secret::File(ref f))
243242
if typ == NodeKeyType::Ed25519 &&

0 commit comments

Comments
 (0)