├── .formatter.exs ├── .gitignore ├── .lexical └── lexical.log ├── README.md ├── config ├── config.exs ├── dev.exs └── test.exs ├── lib ├── elixir_raft.ex └── elixir_raft │ ├── application.ex │ ├── consensus │ ├── commit_manager.ex │ ├── message_dispatcher.ex │ └── state_machine.ex │ ├── core │ ├── cluster_config.ex │ ├── cluster_info.ex │ ├── log_entry.ex │ ├── node_id.ex │ ├── server_state.ex │ └── term.ex │ ├── network │ ├── peer.ex │ ├── peer_supervisor.ex │ ├── supervisor..ex │ ├── tcp_transport.ex │ └── transport_behaviour.ex │ ├── rpc │ └── messages.ex │ ├── server │ ├── candidate.ex │ ├── follower.ex │ ├── leader.ex │ └── role_behaviour.ex │ └── storage │ ├── log_store.ex │ └── state_store.ex ├── mix.exs ├── mix.lock └── test ├── data ├── 4bb3ce31-b049-4fac-9ff3-f09cc28feabf │ └── state │ │ └── state.dat ├── c606d95c-33c2-495d-a6df-f5a289abc681 │ └── state │ │ └── state.dat └── f766d192-61f0-4076-ad61-3ad939e29a26 │ └── state │ └── state.dat ├── elixir_raft ├── consensus │ ├── commit_manager_test.exs │ ├── message_dispatcher_test.exs │ └── state_machine_test.exs ├── core │ ├── cluster_config_test.exs │ ├── log_entry_test.exs │ ├── node_id_test.exs │ ├── server_state_test.exs │ └── term_test.exs ├── integration │ ├── component_integration_test.exs │ ├── core_components_test.exs │ ├── election_test.exs │ ├── node_integration_test.exs │ └── transport_storage_test.exs ├── network │ ├── peer_test.exs │ └── tcp_transport_test.exs ├── rpc │ └── messages_test.exs ├── server │ ├── candidate_test.exs │ ├── follower_test.exs │ └── leader_test.exs └── storage │ ├── log_store_test.exs │ └── state_store_test.exs ├── elixir_raft_test.exs ├── test_helper.exs └── test_support └── cluster_helper.ex /.formatter.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/.formatter.exs -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/.gitignore -------------------------------------------------------------------------------- /.lexical/lexical.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/.lexical/lexical.log -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/README.md -------------------------------------------------------------------------------- /config/config.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/config/config.exs -------------------------------------------------------------------------------- /config/dev.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/config/dev.exs -------------------------------------------------------------------------------- /config/test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/config/test.exs -------------------------------------------------------------------------------- /lib/elixir_raft.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft.ex -------------------------------------------------------------------------------- /lib/elixir_raft/application.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/application.ex -------------------------------------------------------------------------------- /lib/elixir_raft/consensus/commit_manager.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/consensus/commit_manager.ex -------------------------------------------------------------------------------- /lib/elixir_raft/consensus/message_dispatcher.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/consensus/message_dispatcher.ex -------------------------------------------------------------------------------- /lib/elixir_raft/consensus/state_machine.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/consensus/state_machine.ex -------------------------------------------------------------------------------- /lib/elixir_raft/core/cluster_config.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/core/cluster_config.ex -------------------------------------------------------------------------------- /lib/elixir_raft/core/cluster_info.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/core/cluster_info.ex -------------------------------------------------------------------------------- /lib/elixir_raft/core/log_entry.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/core/log_entry.ex -------------------------------------------------------------------------------- /lib/elixir_raft/core/node_id.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/core/node_id.ex -------------------------------------------------------------------------------- /lib/elixir_raft/core/server_state.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/core/server_state.ex -------------------------------------------------------------------------------- /lib/elixir_raft/core/term.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/core/term.ex -------------------------------------------------------------------------------- /lib/elixir_raft/network/peer.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/network/peer.ex -------------------------------------------------------------------------------- /lib/elixir_raft/network/peer_supervisor.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/network/peer_supervisor.ex -------------------------------------------------------------------------------- /lib/elixir_raft/network/supervisor..ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/network/supervisor..ex -------------------------------------------------------------------------------- /lib/elixir_raft/network/tcp_transport.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/network/tcp_transport.ex -------------------------------------------------------------------------------- /lib/elixir_raft/network/transport_behaviour.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/network/transport_behaviour.ex -------------------------------------------------------------------------------- /lib/elixir_raft/rpc/messages.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/rpc/messages.ex -------------------------------------------------------------------------------- /lib/elixir_raft/server/candidate.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/server/candidate.ex -------------------------------------------------------------------------------- /lib/elixir_raft/server/follower.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/server/follower.ex -------------------------------------------------------------------------------- /lib/elixir_raft/server/leader.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/server/leader.ex -------------------------------------------------------------------------------- /lib/elixir_raft/server/role_behaviour.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/server/role_behaviour.ex -------------------------------------------------------------------------------- /lib/elixir_raft/storage/log_store.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/storage/log_store.ex -------------------------------------------------------------------------------- /lib/elixir_raft/storage/state_store.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/lib/elixir_raft/storage/state_store.ex -------------------------------------------------------------------------------- /mix.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/mix.exs -------------------------------------------------------------------------------- /mix.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/mix.lock -------------------------------------------------------------------------------- /test/data/4bb3ce31-b049-4fac-9ff3-f09cc28feabf/state/state.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/data/4bb3ce31-b049-4fac-9ff3-f09cc28feabf/state/state.dat -------------------------------------------------------------------------------- /test/data/c606d95c-33c2-495d-a6df-f5a289abc681/state/state.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/data/c606d95c-33c2-495d-a6df-f5a289abc681/state/state.dat -------------------------------------------------------------------------------- /test/data/f766d192-61f0-4076-ad61-3ad939e29a26/state/state.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/data/f766d192-61f0-4076-ad61-3ad939e29a26/state/state.dat -------------------------------------------------------------------------------- /test/elixir_raft/consensus/commit_manager_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/consensus/commit_manager_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/consensus/message_dispatcher_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/consensus/message_dispatcher_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/consensus/state_machine_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/consensus/state_machine_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/core/cluster_config_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/core/cluster_config_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/core/log_entry_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/core/log_entry_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/core/node_id_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/core/node_id_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/core/server_state_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/core/server_state_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/core/term_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/core/term_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/integration/component_integration_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/integration/component_integration_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/integration/core_components_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/integration/core_components_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/integration/election_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/integration/election_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/integration/node_integration_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/integration/node_integration_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/integration/transport_storage_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/integration/transport_storage_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/network/peer_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/network/peer_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/network/tcp_transport_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/network/tcp_transport_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/rpc/messages_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/rpc/messages_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/server/candidate_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/server/candidate_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/server/follower_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/server/follower_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/server/leader_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/server/leader_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/storage/log_store_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/storage/log_store_test.exs -------------------------------------------------------------------------------- /test/elixir_raft/storage/state_store_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft/storage/state_store_test.exs -------------------------------------------------------------------------------- /test/elixir_raft_test.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/elixir_raft_test.exs -------------------------------------------------------------------------------- /test/test_helper.exs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/test_helper.exs -------------------------------------------------------------------------------- /test/test_support/cluster_helper.ex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgMastermind/elixir_raft/HEAD/test/test_support/cluster_helper.ex --------------------------------------------------------------------------------