Skip to content

Commit

Permalink
Add logger to Raft::request_id arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
jopemachine committed Jan 14, 2024
1 parent 4ded399 commit b3fb647
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 22 deletions.
4 changes: 3 additions & 1 deletion examples/memstore/dynamic-members/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@ async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
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(
Expand Down
25 changes: 10 additions & 15 deletions harness/src/raft_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ pub type Raft = Raft_<LogEntry, HashStore>;

pub static RAFTS: Lazy<Mutex<HashMap<u64, Raft>>> = 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();
Expand All @@ -41,7 +41,7 @@ fn run_raft(node_id: &u64, peers: Peers) -> Result<JoinHandle<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,
Expand Down Expand Up @@ -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<JoinHandle<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());

Expand Down
16 changes: 10 additions & 6 deletions raftify/src/raft_facade.rs
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,18 @@ impl<LogEntry: AbstractLogEntry, FSM: AbstractStateMachine + Clone + Send + Sync
}
}

pub async fn request_id(peer_addr: String) -> Result<ClusterJoinTicket> {
println!("Attempting to get a node_id through \"{}\"...", peer_addr);
pub async fn request_id(
peer_addr: String,
logger: Arc<dyn Logger>,
) -> Result<ClusterJoinTicket> {
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 {}))
Expand All @@ -175,10 +182,7 @@ impl<LogEntry: AbstractLogEntry, FSM: AbstractStateMachine + Clone + Send + Sync
match response.code() {
ResultCode::WrongLeader => {
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 => {
Expand Down

0 comments on commit b3fb647

Please sign in to comment.