Commit Graph

989 Commits (b7f0f52a16dbf83f18ca1d803f7892d750366a94)

Author SHA1 Message Date
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 ec8f493fde raft: refine comments for Configure 2014-09-22 15:44:47 -07:00
Yicheng Qin dc36ae7058 raft: use pb.Config instead of []byte for Configure 2014-09-22 15:44:47 -07:00
Yicheng Qin b82d70871f raft: use EntryType in protobuf 2014-09-22 15:44:46 -07:00
Yicheng Qin b801f1affe raft: refine comment for raft.pendingConf 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 f2ebd64a1b *: add testutil pkg 2014-09-19 14:32:38 -07:00
Jonathan Boulle b66a40495d raft: introduce Node interface 2014-09-17 14:18:56 -07:00
Xiang Li ab61a8aa9a *: init for on disk snap support 2014-09-17 13:56:12 -07:00
Yicheng Qin de21c39ca5 raft: isStateEqual -> isHardStateEqual, IsEmptyState -> IsEmptyHardState 2014-09-16 13:55:00 -07:00
Yicheng Qin 023dc7cba2 etcdserver: add SYNC request 2014-09-16 13:42:03 -07:00
Yicheng Qin cc8d8f2102 raft: remove unused raftpb.LastIndex 2014-09-15 14:34:23 -07:00
Yicheng Qin 9607665323 raft: remove unused return 2014-09-15 13:22:21 -07:00
Yicheng Qin 9bf2c2ed9d Merge pull request #1052 from unihorn/121
server: add unit tests
2014-09-15 13:20:50 -07:00
Yicheng Qin 6cd4434ff3 server: add unit tests
Make test coverage >= 90%
2014-09-15 13:16:48 -07:00
Xiang Li f9c12e2053 Merge pull request #1075 from coreos/fix_heartbeat
raft: fix heartbeat
2014-09-15 10:04:12 -07:00
Yicheng Qin 38c074cb05 Merge pull request #1067 from unihorn/122
raft: write entry 0 into log
2014-09-15 10:00:49 -07:00
Xiang Li 21d116d3e1 raft: fix heartbeat 2014-09-15 09:58:22 -07:00
Yicheng Qin 140fd6d6c4 raft: restart using last written entry also 2014-09-15 09:56:33 -07:00
Yicheng Qin a9af70c52b raft: write entry 0 into log 2014-09-15 09:55:52 -07:00
Xiang Li 29f9372370 Merge pull request #1080 from coreos/check_id
main: check node id is not noneid
2014-09-14 23:28:39 -07:00
Xiang Li e7ea6a374a main: check node id is not noneid 2014-09-14 23:28:11 -07:00
Xiang Li ff7f340bba Merge pull request #1063 from coreos/node_run_test
raft: test node block proposal
2014-09-14 22:46:50 -07:00
Xiang Li e085cc4e06 Merge pull request #1042 from unihorn/118
raft: set none to be 0
2014-09-14 22:32:37 -07:00
Yicheng Qin 2927cc6e3b raft: refine plus assignment 2014-09-14 22:07:32 -07:00
Yicheng Qin da575c46fa raft: remove unused field 2014-09-14 13:08:35 -07:00
Yicheng Qin 34db45a948 raft: set propc, readyc to be nil before run loop 2014-09-12 12:57:50 -07:00
Xiang Li ccee264b7d raft: move defer after run 2014-09-12 12:28:15 -07:00
Xiang Li 45f56a5377 raft: forceGoSched -> forceGosched 2014-09-12 12:27:18 -07:00
Brandon Philips df253a2b14 Merge pull request #1066 from philips/add-raft-doc
add-raft-doc
2014-09-12 12:21:53 -07:00
Xiang Li 5c884c7797 raft: better comment and naming 2014-09-12 12:18:30 -07:00
Xiang Li 0c09862494 raft: add isStateEqual test 2014-09-12 11:59:32 -07:00
Xiang Li f9ef453894 raft: test contain updates 2014-09-12 11:51:25 -07:00
Xiang Li b261a5edc1 raft: test node block proposal 2014-09-12 11:51:25 -07:00
Yicheng Qin 30289dad5c raft: more descriptive panic info 2014-09-12 11:39:53 -07:00
Yicheng Qin 072a21782e Merge pull request #1049 from unihorn/120
raftLog: enhance check in compact
2014-09-12 11:35:41 -07:00
Yicheng Qin d31443f5a3 raftLog: compact applied entries only
compact MUST happen on entries that have been applied, or
1. it may screw up the log by setting wrong commitIndex
2. discard unapplied entries
2014-09-12 11:34:08 -07:00
Brandon Philips 98f9ee3613 raft: add useful comments
These comments were things I learned about the units, use case or
meaning of various fields and functions in the raft package.
2014-09-12 09:58:04 -07:00
Brandon Philips 58b8610024 raft: add a doc.go file
Explain the package from a high level.
2014-09-12 09:57:48 -07:00
Yicheng Qin 073411f23f raft: remove vote with default value 2014-09-11 23:17:13 -07:00
Yicheng Qin dc1357afa9 raft: use raft helper function in testing 2014-09-11 19:26:29 -07:00
Yicheng Qin 0e0fc2bd24 raft: use [1,n] as address list for raft state machines 2014-09-11 19:23:05 -07:00
Yicheng Qin 84c2bd0b7d raft: set From of local message to be local id 2014-09-11 19:18:47 -07:00
Xiang Li 281afa74ee raft: comments for TestNodeStep 2014-09-11 19:00:40 -07:00
Xiang Li eb1dcb324c raft: test node step 2014-09-11 17:10:36 -07:00
Brandon Philips 3bc4b2db12 raft: log comment grammar fix 2014-09-11 13:59:50 -07:00
Yicheng Qin 4e31bb308d raft: use const firstId to track ids 2014-09-09 19:07:20 -07:00
Yicheng Qin b50f96e2e1 raft: set none to be 0 2014-09-09 16:47:21 -07:00
Xiang Li eaffaacf5e raft: do not need to copy committed entries 2014-09-09 14:09:30 -07:00
Xiang Li 676b5be972 raft: use IsEmptyState 2014-09-09 11:58:15 -07:00
Xiang Li ac0443bc89 raft: remove extra code 2014-09-09 10:16:39 -07:00
Xiang Li df259e5878 raft: add a newReady helper function 2014-09-09 10:16:39 -07:00
Xiang Li 90c0db3d42 wal: do not save empty state 2014-09-09 10:15:29 -07:00
Xiang Li c28fef5fc4 raft: set ready.st to empty state, if current state is equal to previous state 2014-09-09 10:15:29 -07:00
Xiang Li b0d865e845 raft: record previous state is enough 2014-09-09 10:15:29 -07:00
Xiang Li 0060c0749a raft: prev should be set only when we sucessfully send out rd to the channel 2014-09-09 10:15:29 -07:00
Jonathan Boulle 9997c9488a *: fix a few small issues identified by go vet 2014-09-08 23:52:36 -07:00
Jonathan Boulle 946e35c958 raft: remove unused alwaysreadyc 2014-09-08 22:21:03 -07:00
Xiang Li 9215ebb6aa Merge pull request #992 from coreos/wal
wal
2014-09-08 16:24:28 -07:00
Xiang Li f3348d6e13 raft: fix the comment in test 2014-09-08 16:16:58 -07:00
Xiang Li 19235c8104 raft: refactor restart test 2014-09-08 16:10:13 -07:00
Brandon Philips 145882244f raft: add doc for the Ready struct 2014-09-08 15:59:15 -07:00
Xiang Li 1a6e908971 *: add wal 2014-09-05 09:52:40 -07:00
Xiang Li 5ddfe18cda Merge pull request #989 from coreos/fix_ignore_term
raft: fix ignore term
2014-09-04 14:36:56 -07:00
Xiang Li 8dfa490e49 raft: fix ignore term 2014-09-04 14:33:51 -07:00
Xiang Li e30505d33b raft: fix node test 2014-09-04 11:42:11 -07:00
Xiang Li d7a289ee41 raft: init prev: vote for none 2014-09-04 11:09:55 -07:00
Xiang Li 8f4c615704 raft: leader should tick heartbeat 2014-09-03 22:01:31 -07:00
Blake Mizerany d844377ca6 *: vendor context 2014-09-03 20:06:16 -07:00
Blake Mizerany 814558306e raft: coerce import gogoproto from third_party 2014-09-03 15:51:09 -07:00
Blake Mizerany 8d9b7b1680 raft: remove entry type 2014-09-03 15:24:47 -07:00
Blake Mizerany 8463421448 raft: remove configuration 2014-09-03 15:23:05 -07:00
Xiang Li bdb954b2f5 wal: fix wal 2014-09-03 15:10:15 -07:00
Xiang Li 3c77693881 raft: make tick send out messages. all state machine actions should be taken inside step function. 2014-09-03 10:17:09 -07:00
Xiang Li 966cfd6e8e raft: fix elapsed reset 2014-09-03 09:20:20 -07:00
Blake Mizerany f2d200a826 raft: log only new/no leader 2014-09-03 09:20:20 -07:00
Blake Mizerany db8e4a2fc0 raft: remove debug logging 2014-09-03 09:20:20 -07:00
Blake Mizerany d218034630 boom 2014-09-03 09:20:20 -07:00
Blake Mizerany b796d227f1 add some logging 2014-09-03 09:20:19 -07:00
Blake Mizerany 6d720fb33f raft: replace Context with Stop 2014-09-03 09:20:18 -07:00
Blake Mizerany f8be54b416 ...deadlocked... 2014-09-03 09:20:17 -07:00
Blake Mizerany 7469871d20 raft: remove proposal id / add test 2014-09-03 09:20:17 -07:00
Blake Mizerany e8e588c67b raft: move protobufs into raftpb 2014-09-03 09:20:17 -07:00
Blake Mizerany ddd219f297 many: marshal message 2014-09-03 09:20:16 -07:00
Blake Mizerany 1eb2512961 raft: only allow one message to Step 2014-09-03 09:20:16 -07:00
Blake Mizerany 225e618b8f raft: add Id to Entry 2014-09-03 09:20:15 -07:00
Blake Mizerany 021e231476 raft: ReadState -> Ready, which returns a chan 2014-09-03 09:20:15 -07:00
Blake Mizerany edac2e909b etcdserver: wip 2014-09-03 09:20:14 -07:00
Blake Mizerany 91b62c0fbf raft: messages -> byMsgType 2014-09-03 09:20:14 -07:00
Blake Mizerany ad307c6965 raft: go fmt 2014-09-03 09:20:14 -07:00
Blake Mizerany 7486d3d4c5 raft: mention error in doc 2014-09-03 09:20:14 -07:00
Blake Mizerany 481e229ad4 raft: unblock progress by deproitizing proposals in Step 2014-09-03 09:20:14 -07:00
Blake Mizerany f87a6f3c1f raft: sift proposals from other message types in Step 2014-09-03 09:20:14 -07:00
Blake Mizerany 4aa15294a8 raft: re-remove clusterId from raft 2014-09-03 09:20:14 -07:00
Blake Mizerany 134a962222 raft: move raft2 to raft 2014-09-03 09:20:14 -07:00
Blake Mizerany 15bb84d320 raft: move in entry.proto 2014-09-03 09:20:14 -07:00
Blake Mizerany 0453d09af6 raft: moved into new raft 2014-09-03 09:20:11 -07:00
Blake Mizerany f03c3bce05 raft: seperate dequeuing from slicing 2014-09-03 09:20:11 -07:00
Yicheng Qin 27c9a0535c server: add tests for on-disk snapshot 2014-09-03 09:20:10 -07:00
Xiang Li 5fdc124578 etcd: clean up snap 2014-09-03 09:20:10 -07:00
Yicheng Qin a28dc4559b raft/etcd: recover node 2014-09-03 09:20:10 -07:00
Xiang Li 63489b9ef5 etcd: snap and wal init 2014-09-03 09:20:10 -07:00
Xiang Li a5df254e53 raft: add clusterId to snapshot 2014-09-03 09:20:08 -07:00
Yicheng Qin 9203f68894 server: add /v2/stats/self 2014-09-03 09:20:07 -07:00
Blake Mizerany c19932c9ba raft: prune unnecessary logging - fixes #15 2014-09-03 09:20:04 -07:00
Xiang Li 8e06333d45 raft: make State a protobuf type 2014-09-03 09:20:03 -07:00
Xiang Li d6c3ebb1a0 raft: make Info a protobuf type 2014-09-03 09:20:03 -07:00
Yicheng Qin 431ff3cce1 raft: minor change on code 2014-09-03 09:20:02 -07:00
Yicheng Qin 15029381e1 raft: fix promotable 2014-09-03 09:20:02 -07:00
Yicheng Qin 01c40fcf50 raft: not recover from outdated snapshot 2014-09-03 09:20:02 -07:00
Yicheng Qin ba63cf666d raft: add recover 2014-09-03 09:20:02 -07:00
Xiang Li 6030261363 etcd/raft: add snap 2014-09-03 09:20:02 -07:00
Xiang Li 38ec659cd6 raft: make Entry a protobuf type 2014-09-03 09:20:01 -07:00
Xiang Li 611d564865 raft: remove unused prevTerm field 2014-09-03 09:20:01 -07:00
Xiang Li 54b4f52e48 raft: add index to entry 2014-09-03 09:20:01 -07:00
Yicheng Qin 88e5bce63d wip: wal glue 2014-09-03 09:19:59 -07:00
Xiang Li b383cd5acf raft: refactor recover 2014-09-03 09:19:59 -07:00
Yicheng Qin 2bd74bc328 raft: add Load 2014-09-03 09:19:59 -07:00
Yicheng Qin e850c644da raft: return offset for unstableEnts 2014-09-03 09:19:58 -07:00
Xiang Li 311db876b0 raft: add unstableState 2014-09-03 09:19:58 -07:00
Xiang Li 609e13a240 raft: add node.Unstable
Be able to return all unstable log entries. Application must store unstable
log entries before send out any messages after calling step.
2014-09-03 09:19:58 -07:00
Xiang Li 1288e1f39d raft: log->raftlog 2014-09-03 09:19:58 -07:00
Xiang Li c7d1beaaa5 raft: add first level logging
We log the message to step and the state of the statemachine before and after
stepping the message.
2014-09-03 09:19:58 -07:00
Xiang Li 2665cc1cc8 raft: heartbeat should not contain entries 2014-09-03 09:19:57 -07:00
Xiang Li 13ec81c87f raft: fix panic in putVarint; varint can take up to 10 bytes for a 64bit integer. 2014-09-03 09:19:56 -07:00
Xiang Li 060de128a7 raft: add clusterId 2014-09-03 09:19:56 -07:00
Yicheng Qin 9793c518ab raft: forbid to use none as id 2014-09-03 09:19:56 -07:00
Yicheng Qin 79689872af raft: use From field to distinguish local message 2014-09-03 09:19:56 -07:00
Xiang Li bea28933d3 raft: init lead to none 2014-09-03 09:19:52 -07:00
Xiang Li 2e86cf2dc8 raft: add more randomness 2014-09-03 09:19:50 -07:00
Xiang Li 9c8aff66a1 raft: randomize election timeout 2014-09-03 09:19:50 -07:00
Xiang Li 3921295b21 raft: update lead to none when receives vaild msgVote 2014-09-03 09:19:50 -07:00
Yicheng Qin 5fc5681cb4 server: make removal go through run loop
It should not send to raft endpoint directly.
2014-09-03 09:19:50 -07:00
Yicheng Qin f1853b4364 raft: add msgDenial to deny removed nodes 2014-09-03 09:19:49 -07:00
Yicheng Qin 690edb2c56 raft: update lead for follower sm when receiving msgApp
Or follower may take `none` as its leader forever if it just launched
a failed election whose term is the same as the current leader.
2014-09-03 09:19:49 -07:00
Xiang Li 447d7dc51b raft: fix log append; add tests 2014-09-03 09:19:49 -07:00
Xiang Li 2ff3ce74c5 raft: add sm.Index 2014-09-03 09:05:14 -07:00
Xiang Li 0886e0ddf4 raft: change term to atomicInt 2014-09-03 09:05:14 -07:00
Xiang Li 30f4d9faea raft: change index and term to int64 2014-09-03 09:05:14 -07:00
Xiang Li e11c7f35b4 raft: add atomicInt 2014-09-03 09:05:14 -07:00
Xiang Li 3f435571d3 raft: atomic load id 2014-09-03 09:05:14 -07:00
Xiang Li c3f8eabac3 etcd: separate raft and client port 2014-09-03 09:05:13 -07:00
Xiang Li fc35324ba7 etcd: pass v2 kv api tests 2014-09-03 09:05:13 -07:00
Xiang Li 2af0ad505a raft: make id int64 2014-09-03 09:05:12 -07:00
Xiang Li 5651272ec8 raft: handle snapshot message 2014-09-03 09:05:12 -07:00
Xiang Li 2a11c1487c raft: sm.compact and sm.restore 2014-09-03 09:05:12 -07:00
Yicheng Qin 62a90e77b3 raft: send Normal with nil Data when leader is elected out 2014-09-03 09:05:12 -07:00
Xiang Li 064004b899 raft: add log compact 2014-09-03 09:05:12 -07:00
Xiang Li 6a232dfc13 raft: add offset for log 2014-09-03 09:05:12 -07:00
Xiang Li 7be945f59b etcd: glue 2014-09-03 09:05:12 -07:00
Yicheng Qin 8eac28350d raft: avoid unexpected self-bootstrap state machine 2014-09-03 09:05:12 -07:00
Yicheng Qin c86f484712 raft: make judge clear 2014-09-03 09:05:12 -07:00
Yicheng Qin 7dc02b947d raft: refine TestVote 2014-09-03 09:05:12 -07:00
Yicheng Qin 095251f1fa raft: Network supports discontinuous ids 2014-09-03 09:05:12 -07:00
Xiang Li 62bdcf6f49 raft: range over sm.ins 2014-09-03 09:05:12 -07:00
Xiang Li e9cb510ef5 raft: node.Add needs the pubAddr field 2014-09-03 09:05:12 -07:00
Blake Mizerany 5778c49689 raft: set term in reset 2014-09-03 09:05:11 -07:00
Blake Mizerany 67808f8db1 raft: remove vestigial canStep 2014-09-03 09:05:11 -07:00
Blake Mizerany 6044b1a0d7 raft: break Step into pieces 2014-09-03 09:05:11 -07:00
Xiang Li f387e3e27d raft: add Entry.isConfig 2014-09-03 09:05:11 -07:00
Xiang Li 3817661f82 raft: rename ConfigAdd/ConfigRemove -> AddNode/RemoveNode 2014-09-03 09:05:11 -07:00
Xiang Li 9f315ffe10 raft: make entry type public 2014-09-03 09:05:11 -07:00
Xiang Li 584186c7ff add HasLeader function 2014-09-03 09:05:11 -07:00
Blake Mizerany dd94d5d4e8 raft: move tick comments into cases 2014-09-03 09:05:11 -07:00
Blake Mizerany 15a8b46359 raft: add/remove -> addNode/removeNode 2014-09-03 09:05:11 -07:00
Blake Mizerany e5b9e22518 raft: Step returns ok 2014-09-03 09:05:11 -07:00
Blake Mizerany a10461f60d raft: Add/Remove -> add/remove 2014-09-03 09:05:11 -07:00
Blake Mizerany 8344303b1a raft: addr -> id 2014-09-03 09:05:11 -07:00
Blake Mizerany cb2095cddc raft: fix typo 2014-09-03 09:05:10 -07:00
Xiang Li cc3a8e26c8 raft: add leader change test for configuration 2014-09-03 09:05:10 -07:00
Blake Mizerany 3a85d97fd9 raft: group Node fields 2014-09-03 09:05:10 -07:00
Xiang Li 6e95448ad7 raft: correct comment for n.Next 2014-09-03 09:05:10 -07:00
Xiang Li 7e27d588ff raft: return all the appliable entries 2014-09-03 09:05:10 -07:00
Blake Mizerany f8a3ac9338 raft: make Msgs one line 2014-09-03 09:05:10 -07:00
Blake Mizerany d12b2c39dd raft: blake is OCD 2014-09-03 09:05:10 -07:00
Blake Mizerany 78bbb37018 raft: Config -> config 2014-09-03 09:05:10 -07:00
Blake Mizerany fb1ca245a7 raft: remove unused ClusterId 2014-09-03 09:05:10 -07:00
Blake Mizerany 8c12d6d00f raft: refactor Node.Add/Remove 2014-09-03 09:05:10 -07:00
Blake Mizerany 96059a496a raft: replace Node.id 2014-09-03 09:05:10 -07:00
Blake Mizerany abd2448931 raft: addr -> id 2014-09-03 09:05:10 -07:00
Blake Mizerany c24b6b4150 raft: init stateMachine in New 2014-09-03 09:05:10 -07:00
Blake Mizerany 7cdd148e24 raft: StartCluster -> Dictate 2014-09-03 09:05:09 -07:00
Xiang Li 1a75beb57c raft: add confAdd and confRemove entry type 2014-09-03 09:05:09 -07:00
Yicheng Qin b5f887f5d2 raft: add cluster test 2014-09-03 09:05:09 -07:00
Yicheng Qin 5cad4e595c raft: add create cluster of itself 2014-09-03 09:05:09 -07:00
Yicheng Qin 193756fa38 raft: add remove node 2014-09-03 09:05:09 -07:00
Xiang Li 961518c893 raft: execute log entries in node.step 2014-09-03 09:05:09 -07:00
Xiang Li 989f41477d raft: rename peer -> peers 2014-09-03 09:05:09 -07:00
Xiang Li 8ce6b94e05 raft: add and remove 2014-09-03 09:05:09 -07:00
Xiang Li d293c4915c raft: fix pendingConf 2014-09-03 09:05:09 -07:00
Xiang Li c03fbf68d6 raft: add conf safety
To make configuration change safe without adding configuration protocol:

1. We only allow to add/remove one node at a time.

2. We only allow one uncommitted configuration entry in the log.

These two rules can make sure there is no disjoint quorums in both current cluster and the
future(after applied any number of committed entries or uncommitted entries in log) clusters.

We add a type field in Entry structure for two reasons:

1. Statemachine needs to know if there is a pending configuration change.

2. Configuration entry should be executed by raft package rather application who is using raft.
2014-09-03 09:05:09 -07:00
Xiang Li 853a458a0d raft: change ins from array to map 2014-09-03 09:05:09 -07:00
Yicheng Qin f9c299da8b raft: return after handling msgBeat
It makes the workflow more clear.
2014-09-03 09:05:09 -07:00
Xiang Li c7e358922b raft: add elaspe reset test 2014-09-03 09:05:09 -07:00
Xiang Li 5d710c0f7a raft: add recvMsgBeat test 2014-09-03 09:05:08 -07:00
Xiang Li 12572e5412 raft: add state transition test 2014-09-03 09:05:08 -07:00
Xiang Li 920b80c41f raft: add single node commit test 2014-09-03 09:05:08 -07:00
Xiang Li 8111d4fbb8 raft: introduce network.cut 2014-09-03 09:05:08 -07:00
Xiang Li a6a63d116f raft: add a test for commit rule 2014-09-03 09:05:08 -07:00
Xiang Li 28f87c2a43 raft: use sm.maybeCommit; should not call log.maybeCommit directly 2014-09-03 09:05:08 -07:00
Yicheng Qin 4d22ff90d5 raft: refactor network simulator
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:08 -07:00
Yicheng Qin a9c81088f8 raft: add new diff
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:08 -07:00
Xiang Li c32d34166e raft: leader updates its own match; tries to commit after a prop 2014-09-03 09:05:08 -07:00
Xiang Li 6fa74b0e33 raft: do bcast when receiving msgBeat 2014-09-03 09:05:08 -07:00
Xiang Li 09d1575eeb raft: node.tick 2014-09-03 09:05:08 -07:00
Xiang Li eff3aadba1 raft: add full stop to every function comment 2014-09-03 09:05:08 -07:00
Xiang Li 167ef7e8b0 raft: test leader replies to appResp 2014-09-03 09:05:08 -07:00
Xiang Li 9bb7265d64 raft: leader only sends append to the unsynced peer when get a bad appResp 2014-09-03 09:05:07 -07:00
Xiang Li 88674a623a raft: use if statement to handle voteResp 2014-09-03 09:05:07 -07:00
Xiang Li b3de2b3450 raft: testVote - breaks state machine init to multiple lines 2014-09-03 09:05:07 -07:00
Xiang Li 59a720d8be raft: vote test for candidate and leader 2014-09-03 09:05:07 -07:00
Xiang Li 828a8cf326 raft: leader denies vote with the same term 2014-09-03 09:05:07 -07:00
Xiang Li 93b08502e4 raft: check voteFor 2014-09-03 09:05:07 -07:00
Yicheng Qin c1c45575be raft: ins: []*index -> []index
It could make raft faster, use less storage.
2014-09-03 09:05:07 -07:00
Xiang Li 1170c21f89 raft: add a single candidate test 2014-09-03 09:05:07 -07:00
Xiang Li 2066ff5acb raft: candidate should become leader directly if it is a one node cluster 2014-09-03 09:05:07 -07:00
Xiang Li 0cdd1b58a4 raft: rename log.commit to log.committed 2014-09-03 09:05:07 -07:00
Xiang Li 9cd3b2153f raft: comment log.nextEnts 2014-09-03 09:05:07 -07:00
Xiang Li a06729a96a raft: use log.lastIndex() 2014-09-03 09:05:07 -07:00
Xiang Li 888ddacd3c raft: remove the init cap of log entries 2014-09-03 09:05:06 -07:00
Xiang Li 2ef9498d6f raft: remove TLA comment 2014-09-03 09:05:06 -07:00
Xiang Li 1f0e13e956 raft: remove sm.voteWorthy 2014-09-03 09:05:06 -07:00
Xiang Li bee9d8bea5 raft: add log.maybeAppend 2014-09-03 09:05:06 -07:00
Xiang Li b70be19653 raft: add log.maybeCommit 2014-09-03 09:05:06 -07:00
Xiang Li 092461d7c8 raft: rename log.len to log.lastIndex 2014-09-03 09:05:06 -07:00
Xiang Li 8f3d109c18 raft: rename log.isOk to log.matchTerm 2014-09-03 09:05:06 -07:00
Xiang Li 4c609ec59c raft: new log struct 2014-09-03 09:05:06 -07:00
Xiang Li cb7b75c15f raft: remove unused function maybeAppend
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:06 -07:00
Xiang Li 74737b76cc raft: leader commit and test
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:06 -07:00
Xiang Li c223eca938 raft: clean stateMachine 2014-09-03 09:05:06 -07:00
Xiang Li 5b052e1e10 raft: prop msg type should be MsgProp 2014-09-03 09:05:06 -07:00
Xiang Li ab79550693 raft: use becomeFollower in cadidate state 2014-09-03 09:05:06 -07:00
Xiang Li 73e3394d2d raft: reverse sort to figure out the ci 2014-09-03 09:05:05 -07:00
Blake Mizerany 8ddcd9799d raft: go fmt 2014-09-03 09:05:05 -07:00
Blake Mizerany 6e0a668455 raft: add Node.Next 2014-09-03 09:05:05 -07:00
Blake Mizerany 9545662c6b raft: return *Node 2014-09-03 09:05:05 -07:00
Blake Mizerany 50e0db4038 raft: attempt first version of Interface 2014-09-03 09:05:05 -07:00
Blake Mizerany 8d7be33dd8 raft: move to raft pkg 2014-09-03 09:05:05 -07:00