From b3fb64793d5225ccbcce27c8da31f29049b89be9 Mon Sep 17 00:00:00 2001 From: Gyubong Date: Sun, 14 Jan 2024 20:20:19 +0900 Subject: [PATCH] Add `logger` to `Raft::request_id` arguments --- examples/memstore/dynamic-members/src/main.rs | 4 ++- harness/src/raft_server.rs | 25 ++++++++----------- raftify/src/raft_facade.rs | 16 +++++++----- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/examples/memstore/dynamic-members/src/main.rs b/examples/memstore/dynamic-members/src/main.rs index fcb3aad7..28a7555d 100644 --- a/examples/memstore/dynamic-members/src/main.rs +++ b/examples/memstore/dynamic-members/src/main.rs @@ -68,7 +68,9 @@ async fn main() -> std::result::Result<(), Box> { Some(peer_addr) => { log::info!("Running in Follower mode"); - let ticket = Raft::request_id(peer_addr.clone()).await.unwrap(); + let ticket = Raft::request_id(peer_addr.clone(), logger.clone()) + .await + .unwrap(); let node_id = ticket.reserved_id; let raft = Raft::build( diff --git a/harness/src/raft_server.rs b/harness/src/raft_server.rs index a035d66e..b806c9c1 100644 --- a/harness/src/raft_server.rs +++ b/harness/src/raft_server.rs @@ -21,7 +21,7 @@ pub type Raft = Raft_; pub static RAFTS: Lazy>> = Lazy::new(|| Mutex::new(HashMap::new())); -fn build_logger(_node_id: u64) -> slog::Logger { +fn build_logger() -> slog::Logger { let decorator = slog_term::TermDecorator::new().build(); let drain = slog_term::CompactFormat::new(decorator).build(); let drain = std::sync::Mutex::new(drain).fuse(); @@ -41,7 +41,7 @@ fn run_raft(node_id: &u64, peers: Peers) -> Result>> { let peer = peers.get(node_id).unwrap(); let cfg = build_config(); let store = HashStore::new(); - let logger = build_logger(*node_id); + let logger = build_logger(); let raft = Raft::build( *node_id, @@ -102,24 +102,19 @@ pub async fn handle_bootstrap(peers: Peers) -> Result<()> { } pub async fn spawn_extra_node(peer_addr: &str, raft_addr: &str) -> Result>> { - let join_ticket = Raft::request_id(peer_addr.to_owned()).await.unwrap(); + let logger = Arc::new(Slogger { + slog: build_logger(), + }); + let join_ticket = Raft::request_id(peer_addr.to_owned(), logger.clone()) + .await + .unwrap(); let node_id = join_ticket.reserved_id; let cfg = build_config(); let store = HashStore::new(); - let logger = build_logger(node_id); - let raft = Raft::build( - node_id, - raft_addr, - store, - cfg, - Arc::new(Slogger { - slog: logger.clone(), - }), - None, - ) - .expect("Raft build failed!"); + let raft = + Raft::build(node_id, raft_addr, store, cfg, logger, None).expect("Raft build failed!"); RAFTS.lock().unwrap().insert(node_id, raft.clone()); diff --git a/raftify/src/raft_facade.rs b/raftify/src/raft_facade.rs index e220e543..4b48feba 100644 --- a/raftify/src/raft_facade.rs +++ b/raftify/src/raft_facade.rs @@ -161,11 +161,18 @@ impl Result { - println!("Attempting to get a node_id through \"{}\"...", peer_addr); + pub async fn request_id( + peer_addr: String, + logger: Arc, + ) -> Result { let mut leader_addr = peer_addr; loop { + logger.info(&format!( + "Attempting to get a node_id through \"{}\"...", + leader_addr + )); + let mut client = create_client(&leader_addr).await?; let response = client .request_id(Request::new(raft_service::Empty {})) @@ -175,10 +182,7 @@ impl { leader_addr = response.leader_addr; - println!( - "Sent message to the wrong leader, retrying with the leader at {}.", - leader_addr - ); + logger.trace("Sent message to the wrong leader, retrying..."); continue; } ResultCode::Ok => {