@@ -32,10 +32,10 @@ use polkadot_primitives::CollatorPair;
3232
3333use sc_authority_discovery:: Service as AuthorityDiscoveryService ;
3434use sc_network:: { config:: FullNetworkConfiguration , Event , NetworkEventStream , NetworkService } ;
35- use sc_service:: { Configuration , TaskManager } ;
35+ use sc_service:: { config :: PrometheusConfig , Configuration , TaskManager } ;
3636use sp_runtime:: { app_crypto:: Pair , traits:: Block as BlockT } ;
3737
38- use futures:: StreamExt ;
38+ use futures:: { FutureExt , StreamExt } ;
3939use std:: sync:: Arc ;
4040
4141mod blockchain_rpc_client;
@@ -69,7 +69,7 @@ fn build_authority_discovery_service<Block: BlockT>(
6969 ..Default :: default ( )
7070 } ,
7171 client,
72- network. clone ( ) ,
72+ network,
7373 Box :: pin ( dht_event_stream) ,
7474 authority_discovery_role,
7575 prometheus_registry,
@@ -160,12 +160,16 @@ async fn new_minimal_relay_chain(
160160 let role = config. role . clone ( ) ;
161161 let mut net_config = sc_network:: config:: FullNetworkConfiguration :: new ( & config. network ) ;
162162
163- let task_manager = {
164- let registry = config. prometheus_config . as_ref ( ) . map ( |cfg| & cfg. registry ) ;
165- TaskManager :: new ( config. tokio_handle . clone ( ) , registry) ?
166- } ;
163+ let prometheus_registry = config. prometheus_registry ( ) ;
164+ let task_manager = TaskManager :: new ( config. tokio_handle . clone ( ) , prometheus_registry) ?;
167165
168- let prometheus_registry = config. prometheus_registry ( ) . cloned ( ) ;
166+ if let Some ( PrometheusConfig { port, registry } ) = config. prometheus_config . clone ( ) {
167+ task_manager. spawn_handle ( ) . spawn (
168+ "prometheus-endpoint" ,
169+ None ,
170+ substrate_prometheus_endpoint:: init_prometheus ( port, registry) . map ( drop) ,
171+ ) ;
172+ }
169173
170174 let genesis_hash = relay_chain_rpc_client
171175 . block_get_hash ( Some ( 0 ) )
@@ -203,18 +207,18 @@ async fn new_minimal_relay_chain(
203207 relay_chain_rpc_client. clone ( ) ,
204208 & config,
205209 network. clone ( ) ,
206- prometheus_registry. clone ( ) ,
210+ prometheus_registry. cloned ( ) ,
207211 ) ;
208212
209213 let overseer_args = CollatorOverseerGenArgs {
210214 runtime_client : relay_chain_rpc_client. clone ( ) ,
211- network_service : network. clone ( ) ,
215+ network_service : network,
212216 sync_oracle,
213217 authority_discovery_service,
214218 collation_req_receiver_v1,
215219 collation_req_receiver_v2,
216220 available_data_req_receiver,
217- registry : prometheus_registry. as_ref ( ) ,
221+ registry : prometheus_registry,
218222 spawner : task_manager. spawn_handle ( ) ,
219223 collator_pair,
220224 req_protocol_names : request_protocol_names,
@@ -226,7 +230,7 @@ async fn new_minimal_relay_chain(
226230
227231 network_starter. start_network ( ) ;
228232
229- Ok ( NewMinimalNode { task_manager, overseer_handle, network } )
233+ Ok ( NewMinimalNode { task_manager, overseer_handle } )
230234}
231235
232236fn build_request_response_protocol_receivers (
0 commit comments