1. 12 Jul, 2018 1 commit
  2. 20 Jun, 2018 2 commits
  3. 11 Jun, 2018 4 commits
  4. 08 Jun, 2018 1 commit
  5. 07 Jun, 2018 1 commit
    • Willem Thiart's avatar
      Remove RAFT_LOGTYPE_SNAPSHOT · 700eebe6
      Willem Thiart authored
      The RAFT_LOGTYPE_SNAPSHOT was a bad design choice. It's better to not
      have this marker entry so that users don't have to check for the log
      entry type in the callbacks. Also, loading a snapshot correctly created
      this marker entry, but the compaction side did not. It's better to
      remove this log type than to fix this asymmetry.
      
      Fixes the following edge cases:
      - Server crashes if the last snapshot index is N and a appendentries
      message pops entries all the way back to index N.
      - Server sends an appendentries message with an invalid prev_log_idx and
      prev_log_term, causing the peer to crash.
      700eebe6
  6. 16 May, 2018 2 commits
  7. 08 Jan, 2018 2 commits
  8. 29 Dec, 2017 1 commit
    • Willem Thiart's avatar
      Fix: log edge cases · b912ff5a
      Willem Thiart authored
      The raft_log API is now being fuzzed tested. This change fixes all of
      the bugs detected by the fuzzer so far.
      b912ff5a
  9. 21 Nov, 2017 6 commits
    • Li Wei's avatar
      DAOS-333 include: Export raft_become_follower() · a7a8291e
      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: default avatarLi Wei <wei.g.li@intel.com>
      a7a8291e
    • Li Wei's avatar
      DAOS-333 server: Handle storage access errors · 76d56d0c
      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: default avatarLi Wei <wei.g.li@intel.com>
      76d56d0c
    • Li Wei's avatar
      DAOS-279 server: Zero timeout_elapsed for leaders · 51e049fd
      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: default avatarLi Wei <wei.g.li@intel.com>
      51e049fd
    • Li Wei's avatar
      DAOS-279 server: Discard current_leader when term changes · 14a4e6a2
      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: default avatarLi Wei <wei.g.li@intel.com>
      14a4e6a2
    • Li Wei's avatar
      DAOS-333 server: Persist term and vote atomically · 854a06d2
      Li Wei authored
      
      
      Remind users' persist_term implementations to persist currentTerm and
      nil votedFor atomically.
      Signed-off-by: default avatarLi Wei <wei.g.li@intel.com>
      854a06d2
    • Li Wei's avatar
      DAOS-333 server: Handle memory allocation errors · 6bf3f5f1
      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: default avatarLi Wei <wei.g.li@intel.com>
      6bf3f5f1
  10. 20 Nov, 2017 1 commit
  11. 21 Jun, 2017 1 commit
    • Willem Thiart's avatar
      Fixes #40 · 883d0d24
      Willem Thiart authored
      raft_send_requestvote and raft_send_appendentries now return proper
      error codes.
      883d0d24
  12. 30 May, 2017 1 commit
  13. 25 Oct, 2016 2 commits
  14. 11 Jun, 2016 5 commits
  15. 19 May, 2016 1 commit
  16. 13 May, 2016 3 commits
  17. 16 Mar, 2016 3 commits
  18. 28 Jan, 2016 1 commit
  19. 25 Jan, 2016 2 commits