Node removed from cluster fails to terminate disrupting cluster operations when `tick_interval` is 0.1
- Dominant language
- Rust
- Stars
- 44
- Forks
- 14
- PR merge metrics
- No merged PRs in 30d
Description
This situation should not occur in the current raftify code. In a `3-node Rust example` code, the following commands were executed from the client:
``` rust
#[actix_rt::main]
async fn main() {
let mut leader_client = create_client(&"127.0.0.1:60061").await.unwrap();
leader_client
.change_config(raft_service::ChangeConfigArgs {
addrs: vec!["127.0.0.1:60062".to_owned()],
changes: vec![ConfChangeSingle {
node_id: 2,
change_type: ConfChangeType::RemoveNode as i32,
}],
})
.await
.expect("Change config failed!");
}
```
The issue occurs when `tick_interval` is set to 0.1: a node removed from the cluster does not terminate and continues to disrupt the cluster's operations. Interestingly, this problem does not occur when the tick_interval is slightly larger.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the 3-node Rust example and reproduce the configuration change using tick_interval set to 0.1, then compare its behavior with a slightly larger interval. Trace the removed node's termination path and the tick handling around change_config. Done means the removed node terminates reliably and no longer disrupts cluster operations at 0.1, with regression coverage for the reported case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100