From 88ce129e82b6d93ba6bb8599d956373c662a9674 Mon Sep 17 00:00:00 2001 From: Georgy Moshkin <gmoshkin@picodata.io> Date: Mon, 28 Nov 2022 11:48:39 +0300 Subject: [PATCH] fix(network): fail early when peer address isn't found --- src/traft/network.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/traft/network.rs b/src/traft/network.rs index f3a32533aa..c7203718a2 100644 --- a/src/traft/network.rs +++ b/src/traft/network.rs @@ -404,7 +404,12 @@ impl ConnectionPool { let instance_id = self .peers .peer_field::<peer_field::InstanceId>(&raft_id) - .map_err(|_| Error::NoPeerWithRaftId(raft_id)).ok(); + .map_err(|_| Error::NoPeerWithRaftId(raft_id)) + .ok(); + // Check if address of this peer is known. + // No need to store the result, + // because it will be updated in the loop + let _ = self.peer_addresses.try_get(raft_id)?; let worker = PoolWorker::run( raft_id, instance_id.clone(), @@ -614,10 +619,12 @@ inventory::submit!(crate::InnerTest { ); // Assert unknown recepient error - assert!(matches!( - pool.send(heartbeat_to_from(9999, 3)).unwrap_err(), - Error::NoPeerWithRaftId(9999) - )); + assert_eq!( + pool.send(heartbeat_to_from(9999, 3)) + .unwrap_err() + .to_string(), + "address of peer with id 9999 not found", + ); // Set up on_disconnect trigger let on_disconnect_cond = Rc::new(fiber::Cond::new()); -- GitLab