1. 30 Jul, 2018 1 commit
    • Yossi Gottlieb's avatar
      Add raft_cancel_snapshot(). · 074091c1
      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.
      074091c1
  2. 20 Jun, 2018 1 commit
  3. 08 Jun, 2018 1 commit
  4. 16 May, 2018 1 commit
  5. 08 Jan, 2018 1 commit
  6. 21 Nov, 2017 5 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: 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
  7. 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
  8. 11 Jun, 2016 2 commits
  9. 16 Mar, 2016 1 commit
  10. 25 Jan, 2016 2 commits
  11. 20 Jan, 2016 1 commit
  12. 31 Dec, 2015 2 commits
  13. 20 Dec, 2015 1 commit
  14. 19 Dec, 2015 1 commit
  15. 17 Nov, 2015 1 commit
  16. 30 Sep, 2015 1 commit
  17. 22 Aug, 2015 1 commit
  18. 14 Aug, 2015 1 commit
  19. 29 Jul, 2015 1 commit
  20. 28 May, 2014 1 commit
  21. 26 Feb, 2014 1 commit
  22. 14 Feb, 2014 2 commits
  23. 16 Jan, 2014 1 commit
  24. 14 Jan, 2014 1 commit
  25. 13 Jan, 2014 2 commits