4d2424210f
Merge pull request #5313 from xiang90/fix_raft_abort
...
raft: simplify leadership transfer
2016-05-13 09:26:01 -07:00
fe884f8209
raft: update LICENSE header
2016-05-12 20:49:15 -07:00
82a6de8b69
raft: simplify leadership transfer
2016-05-10 20:03:42 -07:00
9108af9046
*: clean up from go vet, misspell
2016-04-10 23:16:56 -07:00
4997ed36b4
Merge pull request #5011 from xiang90/r_c
...
raft: fix issues reported by golint
2016-04-08 11:46:12 -07:00
ac059eb8cb
raft: transfer leader feature
2016-04-08 16:56:32 +08:00
1b41ee9c99
raft: fix issues reported by golint
2016-04-07 22:14:56 -07:00
6e6d64fb9b
*: clean up unused vars, functions
...
With help from https://github.com/dominikh/go-unused .
IsNetTimeoutError seems useful, so moved to pkg/netutil.
2016-04-06 21:33:55 -07:00
68db18667a
raft: correct doc comment
2016-04-06 08:43:42 -04:00
5250784b09
raft: use rand.Intn instead of rand.Int and mod
...
This provides a better random distribution and is easier to read.
2016-04-06 08:43:42 -04:00
5d431b4782
raft: lower split vote rate
2016-04-01 12:11:03 -07:00
aedf2c5876
raft: Config: comment wrapping @ 80col
2016-03-01 09:54:58 +01:00
6c1b3a71db
raft: clarify Heartbeat/ElectionTick comments
...
Avoid other, ambiguous interpretations.
2016-03-01 09:52:14 +01:00
c5b51946eb
*: exported godoc fixups
2016-02-21 20:36:44 -08:00
20461ab11a
*: fix many typos
2016-01-31 21:42:39 -08:00
37290820de
Merge pull request #4293 from bdarnell/bcast-after-commit
...
raft: Always call bcastAppend after maybeCommit
2016-01-27 09:58:22 -08:00
6054748181
Merge pull request #4297 from ngaut/ngaut/raft-typo
...
raft: typo
2016-01-26 20:48:53 -08:00
751ab40f44
raft: typo
2016-01-27 12:35:14 +08:00
0771d713e6
raft: Always call bcastAppend after maybeCommit
2016-01-26 16:55:47 -05:00
22925a1d2f
raft: Remove redundant raft.Commit
field.
...
Keeping this field in sync with `raft.raftLog.committed` was
error-prone, so instead we synthesize the `HardState` on demand.
Fixes #4278 .
2016-01-26 15:18:55 -05:00
46bb2582fe
raft: Call maybeCommit after removing a node.
...
removeNode reduces the required quorum size, so some pending entries may
be able to commit after it is applied.
Discovered in cockroachdb/cockroach#3642
2016-01-20 11:05:48 -04:00
194607812c
raft: follow golint notice to replace +=1 with ++
2016-01-13 09:39:00 +08:00
8ee232d4ec
raft: Rename q() to quorum() which is more readable
2016-01-06 15:23:35 +08:00
b38dfda1c9
raft: Tiny refactor
...
Rename i to id since i looks like index which is confusing.
2016-01-04 21:20:54 +08:00
acee23112a
raft: typo
2016-01-04 11:51:51 +08:00
af9f352fe3
raft: update RecentActive name in comments
...
Noticed when retrospectively reviewing #3976 that a couple of places
were missed when the variable was renamed.
2015-12-11 15:06:11 -08:00
cc6d98bf89
etcdserver: only send snapshot when the member is active
2015-12-10 16:15:26 -08:00
9df46f9d6f
raft: expose RecentActive in Progress
2015-12-10 12:17:18 -08:00
1901a4c718
raft: Ensure that Progress is not nil when a MsgSnapStatus comes in.
...
This was causing some issues in cockroach cockroachdb/cockroach#2950
2015-12-07 16:01:18 -05:00
a8cc1570d0
raft: support quorum check when raft is leader
...
If quorum check fails, the leader will step down to follower.
2015-11-24 09:36:37 -08:00
5d0268aa2e
Merge pull request #3877 from bdarnell/campaign-while-leader
...
raft: no-op instead of panic for Campaigning while leader
2015-11-16 19:59:34 -08:00
fbeb58d265
raft: no-op instead of panic for Campaigning while leader
...
We need to be able to force an election (on one node) after creating a
new group (cockroachdb/cockroach#1384 ), but it is difficult to ensure
that our call to Campaign does not race with an election that may be
started by raft itself. A redundant call to Campaign should be a no-op
instead of a panic. (But the panic in becomeCandidate remains, because
we don't want to update the term or change the committed index in this
case)
2015-11-16 21:44:14 -05:00
3a65442d7d
raft: fix print format for term in one log line
...
`term` should be printed in decimal representation instead of
hexadecimal one.
2015-11-15 20:26:16 -08:00
533e728b64
Merge pull request #3609 from yichengq/raft-snapshot
...
raft: kill TODO about behavior when snapshot fails
2015-09-29 19:32:31 -07:00
4c82b481a5
raft: improve behavior when snapshot fails
...
etcd is going to support incremental snapshot, and we design to let it
send at most one snapshot out at first stage. So when one snapshot is in
flight, snapshot request will return error.
When failing to get snapshot when sending MsgSnap, raft prints out
related log and abort sending this message.
2015-09-29 19:15:15 -07:00
f602767e50
raft: remove an obsolete TODO comment on 4MB maxMsgSize hard coding
...
The TODO comment was added by 7571b2cd
, and it was addressed by d9b5b56c
.
2015-09-28 21:31:12 -07:00
b2f4a5f587
*: fix spelling issues (codespell).
...
Signed-off-by: Dmitry Smirnov <onlyjob@member.fsf.org >
2015-09-11 10:22:29 +10:00
4f20e01f60
raft: Ignore proposals if not a current member.
...
Fixes another panic in MultiNode.Propose.
2015-08-31 20:31:14 -04:00
50c1db3fbf
raft: downgrade the logging around snapshot to debugf
...
Snapshot related logging is spamming when leader trying to
sync a failed peer.
2015-08-18 15:43:53 -07:00
cc362ccdad
raft: set logger to raft so log context such as multinode groupID can be logged
2015-08-12 22:56:00 +08:00
b4022899eb
raft: fix panic in send app
...
sendApp accesses the storage several times. Perviously, we
assume that the storage will not be modified during the read
opeartions. The assumption is not true since the storage can
be compacted between the read operations. If a compaction
causes a read entries error, we should not painc. Instead, we
can simply retry the sendApp logic until succeed.
2015-06-15 14:23:33 -07:00
1279e495f0
raft: make the repeated log message under bad path debug level
2015-06-05 17:29:24 -07:00
1561b85bf3
raft: drop the raft prefix in logging
2015-06-02 12:50:42 -07:00
b3fb052ad4
raft: make peers a prviate field in raft.Config
2015-03-24 11:10:07 -07:00
d9b5b56c82
raft: make raft configurable
2015-03-23 09:55:19 -07:00
4a64373225
raft: add flow control for progress
...
Each progress has a inflighs sliding window. When the progress
is in replicate state, inflights will control the sending speed
of the leader.
The leader can have at most maxInflight number of inflight
messages for each replicate progress. Receving a appResp moves
forward the sliding window. Heartbeat response free one
slot if the window is full.
2015-03-20 20:04:33 -07:00
2adb58f9de
raft: move progress to progress.go
2015-03-19 10:05:04 -07:00
7571b2cde2
raft: limit the size of msgApp
...
limit the max size of entries sent per message.
Lower the cost at probing state as we limit the size per message;
lower the penalty when aggressively decrease to a too low next.
2015-03-18 15:59:30 -07:00
67194c0b22
raft: introduce progress states
2015-03-18 08:16:32 -07:00
39731724ff
Merge pull request #2485 from yichengq/337
...
raft: fall back to bad path when unreachable
2015-03-11 14:16:39 -07:00