Xiang Li
063c5c77a0
raft: should not decrease match and next when handling out of order msgAppResp
2014-11-20 17:58:23 -08:00
Xiang Li
b50f331558
Merge pull request #1744 from xiang90/next
...
raft: optimistically increase the next if the follower is already matched
2014-11-19 13:21:11 -08:00
Xiang Li
4c1fd07311
raft: optimistically increase the next if the follower is already matched
...
This is useful since we want to pipeline the appendEntry requests. Without
enabling optimistic increasing, the second pipelining appendEntry request
will include the entries the first one has already sent out. We decrease
the next directly to match if the leader receives a rejection for a matched
follower. This happens if one pipelining request get lost and following ones
arrives at the follower.
2014-11-18 13:41:38 -08:00
Xiang Li
bd4cfa2a07
raft: add handleHeartbeat
...
handleHeartbeat commits to the commit index in the message. It never decreases the
commit index of the raft state machine.
2014-11-18 08:34:06 -08:00
Xiang Li
b93d87f17f
raft: include commitIndex in heartbeat
2014-11-17 16:19:28 -08:00
Yicheng Qin
78cbb1512c
raft: nodes return sorted ids
...
This makes raft.softState return the same result when its soft state is
not changed.
2014-11-11 22:58:15 -08:00
Ben Darnell
21987c8701
raft: remove raftLog.resetUnstable and resetNextEnts
...
These methods are no longer used outside of tests and are redundant with
the new stableTo and appliedTo methods.
2014-11-06 17:18:00 -05:00
Jonathan Boulle
b99633207c
raft: minor cleanup in comments
2014-10-30 10:01:44 -07:00
Jonathan Boulle
0cf0cb3d02
raft: add tests for progress.maybeDecr
2014-10-29 22:57:25 -07:00
Jonathan Boulle
81304b2b7e
raft: move test helper function into tests
2014-10-29 14:04:45 -07:00
Yicheng Qin
bffe611fe6
raft: add tests based on section 5.2 in raft paper
2014-10-29 10:17:09 -07:00
Xiang Li
507300130b
raft: add tests for ignoring heartbeat reply
2014-10-24 11:50:21 -07:00
Yicheng Qin
e200d2a8e2
etcdserver/raft: remove msgDenied, removedNodes, shouldStop
...
The future plan is to do all these in etcdserver level.
2014-10-20 15:13:18 -07:00
Jonathan Boulle
7a4d42166b
*: add license header to all source files
2014-10-17 15:41:22 -07:00
Jonathan Boulle
fc42bdb904
raft: remove unused compactThreshold
2014-10-16 17:11:10 -07:00
Yicheng Qin
32c38820c1
raft: protobuf messageType
2014-10-13 11:13:43 -07:00
Xiang Li
1eb1020717
raft: fix raft test
2014-10-09 14:42:29 +08:00
Xiang Li
8bbbaa88b2
*: raft related int64 -> uint64
2014-10-09 14:29:21 +08:00
Xiang Li
af5b8c6c44
raft: int64 -> uint64
2014-10-09 14:26:43 +08:00
Xiang Li
38af14b0f4
Merge pull request #1260 from coreos/snap_rm
...
raft: save removed nodes in snapshot
2014-10-09 08:00:33 +08:00
Xiang Li
73f2aaf98f
raft: removedSlice -> removedNodes
2014-10-09 06:55:25 +08:00
Xiang Li
c67fd14fe8
Merge pull request #1257 from bdarnell/cleanups
...
Raft: assorted cleanups (golint and go vet)
2014-10-09 05:55:21 +08:00
Ben Darnell
d2e858587f
Raft: a few more improvements to test messages.
2014-10-08 15:07:11 -04:00
Xiang Li
7b61565c0a
raft: save removed nodes in snapshot
2014-10-08 15:33:55 +08:00
Xiang Li
1cd3345e00
raft: address issues with election timeout
2014-10-08 07:41:17 +08:00
Ben Darnell
36558b1924
Raft: fix printf strings found by go vet.
2014-10-07 18:44:06 -04:00
Ben Darnell
3ad0df3722
Raft: fix problems reported by golint.
2014-10-07 18:44:06 -04:00
Xiang Li
f65d117462
raft: add a test for randElectionTimeout
2014-10-07 20:34:15 +08:00
Xiang Li
d7d6f84f64
raft: rand election timeout
2014-10-07 20:12:49 +08:00
Xiang Li
45e4a8643a
raft: add tests for raft.compact
2014-10-07 16:03:11 +08:00
Xiang Li
5587e0d73f
raft: compact takes index and nodes parameters
...
Before this commit, compact always compact log at current appliedindex of raft.
This prevents us from doing non-blocking snapshot since we have to make snapshot
and compact atomically. To prepare for non-blocking snapshot, this commit make
compact supports index and nodes parameters. After completing snapshot, the applier
should call compact with the snapshot index and the nodes at snapshot index to do
a compaction at snapsohot index.
2014-10-07 16:03:11 +08:00
Xiang Li
01ecc60a88
Merge pull request #1203 from coreos/fix_raft
...
raft: commitIndex=min(leaderCommit, index of last new entry)
2014-10-03 22:24:07 +08:00
Xiang Li
172bd7d096
raft: add test for maybeappend change
2014-10-03 22:21:35 +08:00
Xiang Li
16ba77767e
raft: do not decrease nextIndex and send entries for stale reply
2014-10-03 13:41:27 +08:00
Yicheng Qin
8490904f20
Merge pull request #1224 from unihorn/149
...
raft: msg.Denied -> msg.Reject
2014-10-02 12:24:09 -07:00
Yicheng Qin
fff918c672
raft: msg.Denied -> msg.Reject
...
Change the field name because it has msgDenied already.
2014-10-02 12:22:12 -07:00
Yicheng Qin
182c8316e1
raft: refine comment for doc and removed list tests
2014-10-01 14:57:39 -07:00
Yicheng Qin
e4a6c9651a
raft: add removed
...
The usage of removed:
1. tell removed node about its removal explicitly using msgDenied
2. prevent removed node disrupt cluster progress by launching leader election
It is set when apply node removal, or receive msgDenied.
2014-10-01 14:57:38 -07:00
Xiang Li
d7b4e44a66
raft: heartbeat is only response for maintaining leader dominance
2014-09-29 16:57:43 -07:00
Xiang Li
e26ff32fd8
raft: fix error msg
2014-09-28 21:17:51 -07:00
Xiang Li
51529cc3f2
raft: remove index field in msg AppResp
2014-09-28 21:13:53 -07:00
Xiang Li
adefd83855
raft: remove index field in msg voteResp
2014-09-28 21:13:43 -07:00
Xiang Li
86473d8a27
raft: add msg denied field
2014-09-28 21:13:33 -07:00
Yicheng Qin
1ca03d8e9d
raft: move logic to separate func
2014-09-24 10:23:44 -07:00
Yicheng Qin
b07be74a82
raft: stop tickElection when the node is not in peer list
...
This prevents the bug like this:
1. a node sends join to a cluster and succeeds
2. it starts with empty peers and waits for sync, but it have not
received anything
3. election timeout passes, and it promotes itself to leader
4. it commits some log entry
5. its log conflicts with the cluster's
2014-09-23 23:15:02 -07:00
Yicheng Qin
bc7b0108dc
raft: ConfigChange -> ConfChange
2014-09-23 12:02:44 -07:00
Yicheng Qin
d92931853e
raft: Config -> ConfigChange
...
Configure -> ProposeConfigChange
AddNode, RemoveNode -> ApplyConfigChange
2014-09-22 23:39:53 -07:00
Yicheng Qin
b82d70871f
raft: use EntryType in protobuf
2014-09-22 15:44:46 -07:00
Yicheng Qin
ff6705b94b
raft: add Configure, AddNode, RemoveNode
...
Configure is used to propose config change. AddNode and RemoveNode is
used to apply cluster change to raft state machine. They are the
basics for dynamic configuration.
2014-09-22 15:43:13 -07:00
Yicheng Qin
023dc7cba2
etcdserver: add SYNC request
2014-09-16 13:42:03 -07:00