11
11
gossip_service:: GossipService ,
12
12
legacy_contact_info:: LegacyContactInfo as ContactInfo ,
13
13
} ,
14
+ solana_metrics:: datapoint_info,
14
15
solana_rpc_client:: rpc_client:: RpcClient ,
15
16
solana_runtime:: {
16
17
snapshot_archive_info:: SnapshotArchiveInfoGetter ,
@@ -593,6 +594,9 @@ pub fn rpc_bootstrap(
593
594
return ;
594
595
}
595
596
597
+ let total_snapshot_download_time = Instant :: now ( ) ;
598
+ let mut get_rpc_nodes_time = Duration :: new ( 0 , 0 ) ;
599
+ let mut snapshot_download_time = Duration :: new ( 0 , 0 ) ;
596
600
let mut blacklisted_rpc_nodes = HashSet :: new ( ) ;
597
601
let mut gossip = None ;
598
602
let mut vetted_rpc_nodes = vec ! [ ] ;
@@ -617,6 +621,7 @@ pub fn rpc_bootstrap(
617
621
) ) ;
618
622
}
619
623
624
+ let get_rpc_nodes_start = Instant :: now ( ) ;
620
625
get_vetted_rpc_nodes (
621
626
& mut vetted_rpc_nodes,
622
627
& gossip. as_ref ( ) . unwrap ( ) . 0 ,
@@ -626,8 +631,10 @@ pub fn rpc_bootstrap(
626
631
& bootstrap_config,
627
632
) ;
628
633
let ( rpc_contact_info, snapshot_hash, rpc_client) = vetted_rpc_nodes. pop ( ) . unwrap ( ) ;
634
+ get_rpc_nodes_time += get_rpc_nodes_start. elapsed ( ) ;
629
635
630
- match attempt_download_genesis_and_snapshot (
636
+ let snapshot_download_start = Instant :: now ( ) ;
637
+ let download_result = attempt_download_genesis_and_snapshot (
631
638
& rpc_contact_info,
632
639
ledger_path,
633
640
validator_config,
@@ -646,7 +653,9 @@ pub fn rpc_bootstrap(
646
653
identity_keypair,
647
654
vote_account,
648
655
authorized_voter_keypairs. clone ( ) ,
649
- ) {
656
+ ) ;
657
+ snapshot_download_time += snapshot_download_start. elapsed ( ) ;
658
+ match download_result {
650
659
Ok ( ( ) ) => break ,
651
660
Err ( err) => {
652
661
fail_rpc_node (
@@ -662,6 +671,23 @@ pub fn rpc_bootstrap(
662
671
if let Some ( gossip) = gossip. take ( ) {
663
672
shutdown_gossip_service ( gossip) ;
664
673
}
674
+
675
+ datapoint_info ! (
676
+ "bootstrap-snapshot-download" ,
677
+ (
678
+ "total_time_secs" ,
679
+ total_snapshot_download_time. elapsed( ) . as_secs( ) ,
680
+ i64
681
+ ) ,
682
+ ( "get_rpc_nodes_time_secs" , get_rpc_nodes_time. as_secs( ) , i64 ) ,
683
+ (
684
+ "snapshot_download_time_secs" ,
685
+ snapshot_download_time. as_secs( ) ,
686
+ i64
687
+ ) ,
688
+ ( "download_abort_count" , download_abort_count, i64 ) ,
689
+ ( "blacklisted_nodes_count" , blacklisted_rpc_nodes. len( ) , i64 ) ,
690
+ ) ;
665
691
}
666
692
667
693
/// Get RPC peer node candidates to download from.
0 commit comments