raft
raft copied to clipboard
An Elixir implementation of the raft consensus protocol
We need to support adding and removing peers to the raft cluster. While this is described briefly in [section 6 of the raft paper](https://raft.github.io/raft.pdf) I feel like the explanation is...
### What are we doing to trigger the bug: `while (mix test test/fuzzy/partitions_test.exs:36); do sleep 1; done` ### What we expect: When running the `fuzzy/partitions_test` repeatedly, we expect it to...
### What are we doing to trigger the bug: `while (mix test test/fuzzy/partitions_test.exs:36); do sleep 1; done` ### What we expect: - When running the `fuzzy/partitions_test` repeatedly, we expect it...
Fix the following warning: ``` warning: variable "me" is unused (if the variable is not meant to be used, prefix it with an underscore) lib/raft/server.ex:282: Raft.Server.follower/3 ```
I was just reading through the source code of your project and noticed this small typo. I'm trying to learn the Raft protocol so after going through the paper I...
Lets say we have a state machine like so: ```elixir defmodule Stack do def handle_write({:put, str}, stack) when is_binary(str) do new_stack = [str | stack] {Enum.count(new_stack), new_stack} end end ```...
Right now we do RPC calls by just `spawn`-ing a process and handling all calls and casts inside of that process. It would probably be better to start these rpc...
I saw these test failures on CI: ``` 01:13:22.264 [error] Process :s5 (#PID) terminating ** (FunctionClauseError) no function clause matching in Raft.Server.voted_for_someone_else?/2 (raft) lib/raft/server.ex:491: Raft.Server.voted_for_someone_else?(%Raft.RPC.RequestVoteReq{candidate_id: {:s4, :nonode@nohost}, from: {:s4, :nonode@nohost},...