Skip to content

Commit e4e864b

Browse files
committed
add more timing logs
1 parent e56e8eb commit e4e864b

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

src/builder.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,8 +740,15 @@ impl NodeBuilder {
740740
pub fn build_with_vss_store_and_header_provider(
741741
&self, vss_url: String, store_id: String, header_provider: Arc<dyn VssHeaderProvider>,
742742
) -> Result<Node, BuildError> {
743+
use std::time::Instant;
744+
let build_start = Instant::now();
745+
eprintln!("TIMING: [ldk-node] build_with_vss_store_and_header_provider START");
746+
747+
let step_start = Instant::now();
743748
let logger = setup_logger(&self.log_writer_config, &self.config)?;
749+
eprintln!("TIMING: [ldk-node] setup_logger() took {}ms", step_start.elapsed().as_millis());
744750

751+
let step_start = Instant::now();
745752
let runtime = if let Some(handle) = self.runtime_handle.as_ref() {
746753
Arc::new(Runtime::with_handle(handle.clone(), Arc::clone(&logger)))
747754
} else {
@@ -750,30 +757,38 @@ impl NodeBuilder {
750757
BuildError::RuntimeSetupFailed
751758
})?)
752759
};
760+
eprintln!("TIMING: [ldk-node] runtime setup took {}ms", step_start.elapsed().as_millis());
753761

762+
let step_start = Instant::now();
754763
let seed_bytes = seed_bytes_from_config(
755764
&self.config,
756765
self.entropy_source_config.as_ref(),
757766
Arc::clone(&logger),
758767
)?;
768+
eprintln!("TIMING: [ldk-node] seed_bytes_from_config() took {}ms", step_start.elapsed().as_millis());
759769

760770
let config = Arc::new(self.config.clone());
761771

772+
let step_start = Instant::now();
762773
let vss_xprv = derive_xprv(
763774
config.clone(),
764775
&seed_bytes,
765776
VSS_HARDENED_CHILD_INDEX,
766777
Arc::clone(&logger),
767778
)?;
779+
eprintln!("TIMING: [ldk-node] derive_xprv() took {}ms", step_start.elapsed().as_millis());
768780

769781
let vss_seed_bytes: [u8; 32] = vss_xprv.private_key.secret_bytes();
770782

783+
let step_start = Instant::now();
771784
let vss_store =
772785
VssStore::new(vss_url, store_id, vss_seed_bytes, header_provider).map_err(|e| {
773786
log_error!(logger, "Failed to setup VSS store: {}", e);
774787
BuildError::KVStoreSetupFailed
775788
})?;
789+
eprintln!("TIMING: [ldk-node] VssStore::new() took {}ms", step_start.elapsed().as_millis());
776790

791+
eprintln!("TIMING: [ldk-node] build_with_vss_store_and_header_provider pre-internal took {}ms", build_start.elapsed().as_millis());
777792
build_with_store_internal(
778793
config,
779794
self.chain_data_source_config.as_ref(),
@@ -1215,7 +1230,13 @@ fn build_with_store_internal(
12151230
async_payments_role: Option<AsyncPaymentsRole>, seed_bytes: [u8; 64], runtime: Arc<Runtime>,
12161231
logger: Arc<Logger>, kv_store: Arc<DynStore>,
12171232
) -> Result<Node, BuildError> {
1233+
use std::time::Instant;
1234+
let build_start = Instant::now();
1235+
eprintln!("TIMING: [ldk-node] build_with_store_internal START");
1236+
1237+
let step_start = Instant::now();
12181238
optionally_install_rustls_cryptoprovider();
1239+
eprintln!("TIMING: [ldk-node] optionally_install_rustls_cryptoprovider() took {}ms", step_start.elapsed().as_millis());
12191240

12201241
if let Err(err) = may_announce_channel(&config) {
12211242
if config.announcement_addresses.is_some() {
@@ -1235,6 +1256,7 @@ fn build_with_store_internal(
12351256
}
12361257

12371258
// Initialize the status fields.
1259+
let step_start = Instant::now();
12381260
let node_metrics = match runtime
12391261
.block_on(async { read_node_metrics(Arc::clone(&kv_store), Arc::clone(&logger)).await })
12401262
{
@@ -1248,9 +1270,12 @@ fn build_with_store_internal(
12481270
}
12491271
},
12501272
};
1273+
eprintln!("TIMING: [ldk-node] read_node_metrics() took {}ms", step_start.elapsed().as_millis());
1274+
12511275
let tx_broadcaster = Arc::new(TransactionBroadcaster::new(Arc::clone(&logger)));
12521276
let fee_estimator = Arc::new(OnchainFeeEstimator::new());
12531277

1278+
let step_start = Instant::now();
12541279
let payment_store = match runtime
12551280
.block_on(async { read_payments(Arc::clone(&kv_store), Arc::clone(&logger)).await })
12561281
{
@@ -1266,7 +1291,9 @@ fn build_with_store_internal(
12661291
return Err(BuildError::ReadFailed);
12671292
},
12681293
};
1294+
eprintln!("TIMING: [ldk-node] read_payments() took {}ms", step_start.elapsed().as_millis());
12691295

1296+
let step_start = Instant::now();
12701297
let (chain_source, chain_tip_opt) = match chain_data_source_config {
12711298
Some(ChainDataSourceConfig::Esplora { server_url, headers, sync_config }) => {
12721299
let sync_config = sync_config.unwrap_or(EsploraSyncConfig::default());
@@ -1352,9 +1379,11 @@ fn build_with_store_internal(
13521379
)
13531380
},
13541381
};
1382+
eprintln!("TIMING: [ldk-node] chain_source setup took {}ms", step_start.elapsed().as_millis());
13551383
let chain_source = Arc::new(chain_source);
13561384

13571385
// Initialize the on-chain wallet and chain access
1386+
let step_start = Instant::now();
13581387
let xprv = bitcoin::bip32::Xpriv::new_master(config.network, &seed_bytes).map_err(|e| {
13591388
log_error!(logger, "Failed to derive master secret: {}", e);
13601389
BuildError::InvalidSeedBytes
@@ -1428,6 +1457,7 @@ fn build_with_store_internal(
14281457
Arc::clone(&config),
14291458
Arc::clone(&logger),
14301459
));
1460+
eprintln!("TIMING: [ldk-node] wallet setup (BDK) took {}ms", step_start.elapsed().as_millis());
14311461

14321462
// Initialize the KeysManager
14331463
let cur_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).map_err(|e| {
@@ -1456,6 +1486,7 @@ fn build_with_store_internal(
14561486
));
14571487

14581488
// Read ChannelMonitor state from store
1489+
let step_start = Instant::now();
14591490
let channel_monitors = match persister.read_all_channel_monitors_with_updates() {
14601491
Ok(monitors) => monitors,
14611492
Err(e) => {
@@ -1467,6 +1498,7 @@ fn build_with_store_internal(
14671498
}
14681499
},
14691500
};
1501+
eprintln!("TIMING: [ldk-node] read_all_channel_monitors_with_updates() took {}ms", step_start.elapsed().as_millis());
14701502

14711503
// Initialize the ChainMonitor
14721504
let chain_monitor: Arc<ChainMonitor> = Arc::new(chainmonitor::ChainMonitor::new(
@@ -1480,6 +1512,7 @@ fn build_with_store_internal(
14801512
));
14811513

14821514
// Initialize the network graph, scorer, and router
1515+
let step_start = Instant::now();
14831516
let network_graph = match runtime
14841517
.block_on(async { read_network_graph(Arc::clone(&kv_store), Arc::clone(&logger)).await })
14851518
{
@@ -1493,7 +1526,9 @@ fn build_with_store_internal(
14931526
}
14941527
},
14951528
};
1529+
eprintln!("TIMING: [ldk-node] read_network_graph() took {}ms", step_start.elapsed().as_millis());
14961530

1531+
let step_start = Instant::now();
14971532
let local_scorer = match runtime.block_on(async {
14981533
read_scorer(Arc::clone(&kv_store), Arc::clone(&network_graph), Arc::clone(&logger)).await
14991534
}) {
@@ -1510,6 +1545,7 @@ fn build_with_store_internal(
15101545
};
15111546

15121547
let scorer = Arc::new(Mutex::new(CombinedScorer::new(local_scorer)));
1548+
eprintln!("TIMING: [ldk-node] read_scorer() took {}ms", step_start.elapsed().as_millis());
15131549

15141550
// Restore external pathfinding scores from cache if possible.
15151551
match runtime.block_on(async {
@@ -1588,6 +1624,7 @@ fn build_with_store_internal(
15881624
Arc::new(MessageRouter::new(Arc::clone(&network_graph), Arc::clone(&keys_manager)));
15891625

15901626
// Initialize the ChannelManager
1627+
let step_start = Instant::now();
15911628
let channel_manager = {
15921629
if let Ok(res) = KVStoreSync::read(
15931630
&*kv_store,
@@ -1639,6 +1676,7 @@ fn build_with_store_internal(
16391676
)
16401677
}
16411678
};
1679+
eprintln!("TIMING: [ldk-node] channel_manager init took {}ms", step_start.elapsed().as_millis());
16421680

16431681
let channel_manager = Arc::new(channel_manager);
16441682

@@ -1682,6 +1720,7 @@ fn build_with_store_internal(
16821720

16831721
// Initialize the GossipSource
16841722
// Use the configured gossip source, if the user set one, otherwise default to P2PNetwork.
1723+
let step_start = Instant::now();
16851724
let gossip_source_config = gossip_source_config.unwrap_or(&GossipSourceConfig::P2PNetwork);
16861725

16871726
let gossip_source = match gossip_source_config {
@@ -1716,7 +1755,9 @@ fn build_with_store_internal(
17161755
))
17171756
},
17181757
};
1758+
eprintln!("TIMING: [ldk-node] gossip_source setup took {}ms", step_start.elapsed().as_millis());
17191759

1760+
let step_start = Instant::now();
17201761
let event_queue = match runtime
17211762
.block_on(async { read_event_queue(Arc::clone(&kv_store), Arc::clone(&logger)).await })
17221763
{
@@ -1730,7 +1771,9 @@ fn build_with_store_internal(
17301771
}
17311772
},
17321773
};
1774+
eprintln!("TIMING: [ldk-node] read_event_queue() took {}ms", step_start.elapsed().as_millis());
17331775

1776+
let step_start = Instant::now();
17341777
let (liquidity_source, custom_message_handler) =
17351778
if let Some(lsc) = liquidity_source_config.as_ref() {
17361779
let mut liquidity_source_builder = LiquiditySourceBuilder::new(
@@ -1790,6 +1833,7 @@ fn build_with_store_internal(
17901833
} else {
17911834
(None, Arc::new(NodeCustomMessageHandler::new_ignoring()))
17921835
};
1836+
eprintln!("TIMING: [ldk-node] liquidity_source setup took {}ms", step_start.elapsed().as_millis());
17931837

17941838
let msg_handler = match gossip_source.as_gossip_sync() {
17951839
GossipSync::P2P(p2p_gossip_sync) => MessageHandler {
@@ -1830,6 +1874,7 @@ fn build_with_store_internal(
18301874
));
18311875

18321876
liquidity_source.as_ref().map(|l| l.set_peer_manager(Arc::clone(&peer_manager)));
1877+
eprintln!("TIMING: [ldk-node] peer_manager setup took {}ms", step_start.elapsed().as_millis());
18331878

18341879
gossip_source.set_gossip_verifier(
18351880
Arc::clone(&chain_source),
@@ -1840,6 +1885,7 @@ fn build_with_store_internal(
18401885
let connection_manager =
18411886
Arc::new(ConnectionManager::new(Arc::clone(&peer_manager), Arc::clone(&logger)));
18421887

1888+
let step_start = Instant::now();
18431889
let output_sweeper = match runtime.block_on(async {
18441890
read_output_sweeper(
18451891
Arc::clone(&tx_broadcaster),
@@ -1870,7 +1916,9 @@ fn build_with_store_internal(
18701916
}
18711917
},
18721918
};
1919+
eprintln!("TIMING: [ldk-node] read_output_sweeper() took {}ms", step_start.elapsed().as_millis());
18731920

1921+
let step_start = Instant::now();
18741922
let peer_store = match runtime
18751923
.block_on(async { read_peer_info(Arc::clone(&kv_store), Arc::clone(&logger)).await })
18761924
{
@@ -1884,6 +1932,7 @@ fn build_with_store_internal(
18841932
}
18851933
},
18861934
};
1935+
eprintln!("TIMING: [ldk-node] read_peer_info() took {}ms", step_start.elapsed().as_millis());
18871936

18881937
let om_mailbox = if let Some(AsyncPaymentsRole::Server) = async_payments_role {
18891938
Some(Arc::new(OnionMessageMailbox::new()))
@@ -1897,6 +1946,7 @@ fn build_with_store_internal(
18971946

18981947
let pathfinding_scores_sync_url = pathfinding_scores_sync_config.map(|c| c.url.clone());
18991948

1949+
eprintln!("TIMING: [ldk-node] build_with_store_internal TOTAL took {}ms", build_start.elapsed().as_millis());
19001950
Ok(Node {
19011951
runtime,
19021952
stop_sender,

0 commit comments

Comments
 (0)