- 19 Sep, 2022 1 commit
-
-
Ozan Tezcan authored
Moved internal functions to raft_internal.h Still, application can include raft_private.h use internal functions (not suggested).
-
- 12 Sep, 2022 2 commits
-
-
Ozan Tezcan authored
Added a helper function to get string representation of an error code.
-
Ozan Tezcan authored
Refactor callback comments. - Regroup related callbacks. - Move optional callbacks to the bottom and indicate "(optional)".
-
- 30 Aug, 2022 1 commit
-
-
Ozan Tezcan authored
Refactor debug logging and change log callback e.g: 19 --> 13, sent snapshot_resp id:27712, t:24, s:1, o:4096, lc:0 14 --> 17, sent requestvote_req pv:1, t:25, ci:14, lli:6848, llt:23 14 <-- 17, recv requestvote_resp pv:1, t:25, rt:24, vg:0 Breaking changes: raft_log_f() callback will not pass node_id_t anymore. Sender and receiver will be part of the log line as you can see above.
-
- 29 Aug, 2022 3 commits
-
-
Ozan Tezcan authored
Simplied pop callback. Previously, libraft was passing a callback(raft_entry_notify_f) to the pop callback. The application was supposed to call that callback for each removed entry. Libraft can loop over the entries and call the required functions itself. So, we can delete raft_entry_notify_f from the pop callback just to simplify API. In addition to that, this PR removes raft_pop_entry() function which doesn't have a use-case, as far as I can see. We can use raft_delete_entry_from_idx(me, raft_get_current_idx()) instead if required.
-
Ozan Tezcan authored
Add raft_get_last_applied_term()
-
Ozan Tezcan authored
Fix style issues in raft_log.c raft_node.c and raft_server_properties.c
-
- 28 Aug, 2022 1 commit
-
-
Ozan Tezcan authored
In https://github.com/RedisLabs/raft/pull/118, we introduced raft_restore_snapshot() which makes raft_set_snapshot_metadata() obsolete.
-
- 25 Aug, 2022 1 commit
-
-
Ozan Tezcan authored
Configuration changes are special in Raft. They take effect whenever the related log entries are appended. On a restart, we should go over the log entries and rebuild the configuration. Adding raft_restore_log() function for this purpose. Overall, on a restart, application should do: Load the snapshot and call raft_restore_snapshot() Load the log entries and call raft_restore_log() Read the metadata file and call raft_restore_metadata().
-
- 23 Aug, 2022 2 commits
-
-
Yehoshua (Josh) Hershberg authored
-
Ozan Tezcan authored
Combine raft_persist_vote_f and raft_persist_term_f into a single callback: raft_persist_metadata_f. Users should persist vote and term into a single metadata file. After a restart, application should call raft_restore_metadata() to restore vote and term
-
- 22 Aug, 2022 2 commits
-
-
Ozan Tezcan authored
Use typedef instead of the actual type
-
Ozan Tezcan authored
- raft_load_snapshot_f(): Changed order of arguments term and index to be inline with raft_begin_load_snapshot(). - Refactored raft_begin_load_snapshot(). Now, inside this function, current server's node flags are cleared. Previously, application had to take care of it. e.g Application had to clear inactive flag on a snapshot. - Added raft_restore_snapshot() to let libraft know that application has loaded a snapshot.
-
- 18 Aug, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 16 Aug, 2022 3 commits
-
-
Ozan Tezcan authored
In #106, we introduced raft_time_t which is at least 8 bytes. election_timeout_rand should use this type to prevent slicing.
-
Ozan Tezcan authored
Leftover after #105
-
Ozan Tezcan authored
Delete stale HAVE_FUNC_LOG guard Log callback is already optional. Pre-processor guard is unnecessary.
-
- 08 Aug, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 07 Jul, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 30 Jun, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 19 Jun, 2022 1 commit
-
-
Ozan Tezcan authored
Throttle operations if it takes longer than request timeout
-
- 19 May, 2022 1 commit
-
-
Ozan Tezcan authored
Simplify read request processing
-
- 02 May, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 26 Apr, 2022 1 commit
-
-
Ozan Tezcan authored
Add raft_config() function for configuration
-
- 06 Apr, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 03 Apr, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 30 Mar, 2022 2 commits
-
-
Ozan Tezcan authored
-
Ozan Tezcan authored
-
- 24 Mar, 2022 1 commit
-
-
Ozan Tezcan authored
Delete private typedefs, use namespace raft_ for exported symbols
-
- 21 Mar, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 13 Mar, 2022 4 commits
-
-
Ozan Tezcan authored
Enabled compiler warnings and fixed issues
-
Ozan Tezcan authored
-
Ozan Tezcan authored
-
Ozan Tezcan authored
-
- 06 Mar, 2022 1 commit
-
-
Ozan Tezcan authored
-
- 07 Feb, 2022 1 commit
-
-
Ozan Tezcan authored
Add support for async disk flush, backpressure and batching
-
- 16 Nov, 2021 1 commit
-
-
Yossi Gottlieb authored
* Add COVERAGE=1 Makefile option to build libraft with coverage. * Refactor CFFI module to use the existing shared object in an out-of-line configuration, so there's no need to build and re-build it. * Makefile adjustments to build the module CFFI as needed. * Remove raft_get_snapshot_entry_idx, a prototype for an undefined function that breaks CFFI. * Add a gcov Makefile target to fetch both unit tests and integration test coverage in one shot.
-
- 15 Nov, 2021 1 commit
-
-
Ozan Tezcan authored
Added snapshot RPC to support large state machines.
-
- 07 Oct, 2021 1 commit
-
-
Shaya Potter authored
this started off as a small tweak and grew a bit 1) new callback for transfer leader result, along with its own enum of states 2) change/remove raft_reset_transfer_leader() calls only call in places where there's a new leader or timeout (i.e. failed to transfer within period). so, we only reset in 3 places 1) recv_appendentries 2) raft_periodic (timeout) 3) raft_become_leader 2a) raft_become_leader also got refactored a little to only issue the normal cb.notify_state_event() callback after it has set its state to be leader (as before, it could fail after the callback was issued) 2b) in raft_periodic the raft_reset_transfer_leader() is pulled out the "if LEADER" block, as will lose leader when a vote is issued to it, we still want it to timeout if leadership isn't gained 3) raft_reset_transfer_leader() does the logic for determining success/failure now, but becaue timeout is its own result which can't be determined by just looking at leader/desired, add a new flag to it to note timeout state 4) leader stickiness in requestvote is only tested for prevote (as in a timeout now case, we want to drop the timeout now flag after prevotes are sent). The idea is that we will only get to actual election if prevote passes. 4) a bunch of new tests * fix issue with timeout flag to reset_transfer_leader also fix test to catch the original error * libraft/redisraft changes needed for e2e leader transfer * make leader stickiness only for prevote
-
- 23 Sep, 2021 1 commit
-
-
Shaya Potter authored
this is the small modifications needed for raftlib to support timeout now rpc 1) add a flag to requestvote type to tell other nodes its overriding normal chec 2) new send_timeoutnow callback to send a timeout now rpc at right time 3) call said callback is we've marked the node as timeout now and in raft_appendentries_response raft_get_current_idx(me_) == r->current_idx (i.e. response says the node's idx is up to date with leader) 4) add helper functions to set/get/reset timeout flag on node structs for targeted node. how it would be used by client 1) client of libraft will call raft_transfer_leader(raft_server_t* me_, raft_node_id_t node_id) to target the node they want to transfer to. 2) client of libraft will provide the send_timeoutnow() callback for the actual sending of the rpc 3) client of libraft will modify their existing notify_state_event() callback to observe the result of the timeout now operation. if it receives a RAFT_STATE_LEADERSHIP_TRANSFER_FAILED, then the transfer failed if it received a RAFT_STATE_FOLLOWER, then it inspects for the actual leader to see if its the expected one and can return that it was transferred to expected node or not if it received a RAFT_STATE_CANDIDATE, then the transfer also failed, as the targeted node sent a request vote which removed leadership, but wasn't able to win the election. With PreVote, this latter case should be very rare.
-