Skip to content

Commit 94f75b2

Browse files
committed
Improve logging in Node
While we cannot get rid of the panics here, we can make sure the errors are logged before we (explicitly) panic.
1 parent 3590d8a commit 94f75b2

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

src/lib.rs

+30-9
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,10 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
461461
Arc::clone(&gossip_sync_store),
462462
Arc::clone(&gossip_sync_logger),
463463
)
464-
.expect("Persistence failed");
464+
.unwrap_or_else(|e| {
465+
log_error!(gossip_sync_logger, "Persistence failed: {}", e);
466+
panic!("Persistence failed");
467+
});
465468
}
466469
Err(e) => log_error!(
467470
gossip_sync_logger,
@@ -480,6 +483,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
480483
let peer_manager_connection_handler = Arc::clone(&self.peer_manager);
481484
let mut stop_listen = self.stop_receiver.clone();
482485
let listening_address = listening_address.clone();
486+
let listening_logger = Arc::clone(&self.logger);
483487

484488
let bind_addr = listening_address
485489
.to_socket_addrs()
@@ -503,9 +507,14 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
503507

504508
runtime.spawn(async move {
505509
let listener =
506-
tokio::net::TcpListener::bind(bind_addr).await.expect(
507-
"Failed to bind to listen address/port - is something else already listening on it?",
508-
);
510+
tokio::net::TcpListener::bind(bind_addr).await
511+
.unwrap_or_else(|e| {
512+
log_error!(listening_logger, "Failed to bind to listen address/port - is something else already listening on it?: {}", e);
513+
panic!(
514+
"Failed to bind to listen address/port - is something else already listening on it?",
515+
);
516+
});
517+
509518
loop {
510519
let peer_mgr = Arc::clone(&peer_manager_connection_handler);
511520
tokio::select! {
@@ -616,7 +625,10 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
616625

617626
let unix_time_secs = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs();
618627
io::utils::write_latest_node_ann_bcast_timestamp(unix_time_secs, Arc::clone(&bcast_store), Arc::clone(&bcast_logger))
619-
.expect("Persistence failed");
628+
.unwrap_or_else(|e| {
629+
log_error!(bcast_logger, "Persistence failed: {}", e);
630+
panic!("Persistence failed");
631+
});
620632
}
621633
}
622634
}
@@ -642,6 +654,7 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
642654
let background_gossip_sync = self.gossip_source.as_gossip_sync();
643655
let background_peer_man = Arc::clone(&self.peer_manager);
644656
let background_logger = Arc::clone(&self.logger);
657+
let background_error_logger = Arc::clone(&self.logger);
645658
let background_scorer = Arc::clone(&self.scorer);
646659
let stop_bp = self.stop_receiver.clone();
647660
let sleeper = move |d| {
@@ -672,7 +685,10 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
672685
true,
673686
)
674687
.await
675-
.expect("Failed to process events");
688+
.unwrap_or_else(|e| {
689+
log_error!(background_error_logger, "Failed to process events: {}", e);
690+
panic!("Failed to process events");
691+
});
676692
});
677693

678694
*runtime_lock = Some(runtime);
@@ -733,9 +749,14 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
733749
///
734750
/// **Note:** This **MUST** be called after each event has been handled.
735751
pub fn event_handled(&self) {
736-
self.event_queue
737-
.event_handled()
738-
.expect("Couldn't mark event handled due to persistence failure");
752+
self.event_queue.event_handled().unwrap_or_else(|e| {
753+
log_error!(
754+
self.logger,
755+
"Couldn't mark event handled due to persistence failure: {}",
756+
e
757+
);
758+
panic!("Couldn't mark event handled due to persistence failure");
759+
});
739760
}
740761

741762
/// Returns our own node id

0 commit comments

Comments
 (0)