- 12 Sep, 2021 1 commit
-
-
Shaya Potter authored
* add a read_queue test to virtraft every iteration we push a read_queue request and the handler and an we pass to it set a variable on calling. we can use this to make sure that the read_queue doesn't get too far from the iteration. i.e. we pass the leader's msg_id and can check to ensure that leader's msg_id doesn't get too far from the msg_id (variable) we see in read_queue test this is analog to the current log applying deadlock test. * implements msg_id checking in virtraft for verification of read_queue requests When we pop an entry off the read_queue with the can_read flag, we verify across all nodes that the majority of nodes have accepted from the leader a msg_id past what this read_queue entry needs. the problem with this is, that until now, msg_id was private to each server instance and has no relevance to the followre nodes except to include it back in response. we change that to have the followers store the max msg_id they've seen from their current leader using that, in the read_queue_handler we can verify that the leader's voting nodes have a quorum past the msg_id variable that the handler will return to ensure that this read_queue handler call is correct.
-
- 09 Sep, 2021 1 commit
-
-
Ozan Tezcan authored
Unknown node handling
-
- 19 Aug, 2021 1 commit
-
-
Ozan Tezcan authored
code refactor
-
- 18 Aug, 2021 1 commit
-
-
Ozan Tezcan authored
Implemented check-quorum
-
- 04 Aug, 2021 1 commit
-
-
Shaya Potter authored
create a self documenting function name instead of throwing in a bunch of conditions
-
- 19 Dec, 2018 1 commit
-
-
Yossi Gottlieb authored
This makes it possible to request a consistent read without having to commit it as a log operation. For every read request an AE heartbeat is delivered and a quorum response is expected.
-
- 06 Dec, 2018 1 commit
-
-
Yossi Gottlieb authored
-
- 07 Aug, 2018 2 commits
-
-
Yossi Gottlieb authored
If specified when calling raft_begin_snapshot(), the library will not postpone applying entries during snapshots. This requires the FSM to provide full isolation between the snapshot and active state.
-
Yossi Gottlieb authored
If specified when calling raft_begin_snapshot(), the library will not postpone applying entries during snapshots. This requires the FSM to provide full isolation between the snapshot and active state.
-
- 30 Jul, 2018 2 commits
-
-
Yossi Gottlieb authored
This cancels the snapshot operation and reverts back to the state we were in before raft_begin_snapshot(). It is useful for cases where the snapshot operation fails. It is the caller's responsibility to make sure the FSM state remains intact of course.
-
Yossi Gottlieb authored
This cancels the snapshot operation and reverts back to the state we were in before raft_begin_snapshot(). It is useful for cases where the snapshot operation fails. It is the caller's responsibility to make sure the FSM state remains intact of course.
-
- 20 Jun, 2018 1 commit
-
-
Yossi Gottlieb authored
-
- 08 Jun, 2018 1 commit
-
-
Jiale Zhi authored
-
- 24 May, 2018 1 commit
-
-
Yossi Gottlieb authored
-
- 16 May, 2018 1 commit
-
-
Yossi Gottlieb authored
-
- 04 Mar, 2018 1 commit
-
-
Yossi Gottlieb authored
-
- 08 Jan, 2018 1 commit
-
-
Willem Thiart authored
-
- 21 Nov, 2017 5 commits
-
-
Li Wei authored
Move the declaration of raft_become_follower() from raft_private.h to raft.h, so that users may voluntarily give up leadership. Signed-off-by:
Li Wei <wei.g.li@intel.com>
-
Li Wei authored
User storage callbacks may return negative errors smaller than RAFT_ERR_LAST. These will be returned all the way to the API methods, which report the errors back to users, so that appropriate handlings may be performed. Signed-off-by:
Li Wei <wei.g.li@intel.com>
-
Li Wei authored
If raft_become_candidate() assigns a negative value e (i.e., -election_timeout < e < 0) to timeout_elapsed, and if this replica successfully becomes the leader, then this leader won't send heartbeats for request_timeout - e milliseconds. This may be longer than election_timeout and cause an unnecessary leadership change. This patch zeroes timeout_elapsed in raft_become_leader(), randomizes election timeouts in [election_timeout, 2 * election_timeout), and fixes raft_recv_appendentries() to avoid zeroing timeout_elapsed if the AE request has an older term. Signed-off-by:
Li Wei <wei.g.li@intel.com>
-
Li Wei authored
When a leader learns of a newer term and steps down, it should discard current_leader. Otherwise, a client request may be rejected with RAFT_ERR_NOT_LEADER and a hint pointing to this replica itself! For simplicity, this patche follows the Raft paper to discard current_leader whenever current_term changes. And, when receiving an AE with an up-to-date term, a server always updates current_leader, as this information is absolute, even if the previous entry doesn't match. This patch also fixes a test that has previously been failing due to incorrect node IDs. Signed-off-by:
Li Wei <wei.g.li@intel.com>
-
Li Wei authored
Check and handle memory allocation errors by reporting them back to users via NULL or RAFT_ERR_NOMEM return values. Signed-off-by:
Li Wei <wei.g.li@intel.com>
-
- 21 Jun, 2017 1 commit
-
-
Willem Thiart authored
raft_send_requestvote and raft_send_appendentries now return proper error codes.
-
- 11 Jun, 2016 2 commits
-
-
Willem Thiart authored
-
Willem Thiart authored
-
- 16 Mar, 2016 1 commit
-
-
Willem Thiart authored
-
- 25 Jan, 2016 2 commits
-
-
Willem Thiart authored
-
Willem Thiart authored
-
- 20 Jan, 2016 1 commit
-
-
Willem Thiart authored
-
- 31 Dec, 2015 2 commits
-
-
Willem Thiart authored
-
Willem Thiart authored
-
- 20 Dec, 2015 1 commit
-
-
Willem Thiart authored
-
- 19 Dec, 2015 1 commit
-
-
Willem Thiart authored
-
- 17 Nov, 2015 1 commit
-
-
Willem Thiart authored
-
- 30 Sep, 2015 1 commit
-
-
Amitabha Roy authored
-
- 22 Aug, 2015 1 commit
-
-
Willem Thiart authored
-
- 14 Aug, 2015 1 commit
-
-
Willem Thiart authored
-
- 29 Jul, 2015 1 commit
-
-
Matt Amos authored
-
- 28 May, 2014 1 commit
-
-
Willem Thiart authored
-
- 26 Feb, 2014 1 commit
-
-
Andrea Guzzo authored
so there is no need to turn off warnings for implicit-function-declaration
-