Xiang Li
dac8c6fcc0
Merge pull request #10167 from nvanbenschoten/nvanbenschoten/limitUncommitted
...
raft: provide protection against unbounded Raft log growth
2018-10-13 23:52:28 -07:00
Nathan VanBenschoten
f89b06dc6d
raft: provide protection against unbounded Raft log growth
...
The suggested pattern for Raft proposals is that they be retried
periodically until they succeed. This turns out to be an issue
when a leader cannot commit entries because the leader will continue
to append re-proposed entries to its log without committing anything.
This can result in the uncommitted tail of a leader's log growing
without bound until it is able to commit entries.
This change add a safeguard to protect against this case where a
leader's log can grow without bound during loss of quorum scenarios.
It does so by introducing a new, optional ``MaxUncommittedEntriesSize
configuration. This config limits the max aggregate size of uncommitted
entries that may be appended to a leader's log. Once this limit
is exceeded, proposals will begin to return ErrProposalDropped
errors.
See cockroachdb/cockroach#27772
2018-10-13 23:25:05 -04:00
Wenjia
1cab49ef78
Merge pull request #9718 from kchristidis/fix-snap-pub-error
...
raftexample: Fix publish snapshot error message
2018-10-11 16:45:55 -07:00
caoming
dd6e579b84
raftexample: use Rlock instead of Lock in getsnapshot
2018-09-19 13:25:47 +08:00
Gyuho Lee
d37f1521b7
*: update import paths to "go.etcd.io/etcd"
...
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-28 17:47:55 -07:00
Kostas Christidis
9431532730
raftexample: Fix publish snapshot error message
...
The error message is different to the condition it checks for. This PR
modifies the error message accordingly.
Closes #9717 .
Signed-off-by: Kostas Christidis <kostas@christidis.io>
2018-07-26 11:14:15 -04:00
Gyuho Lee
42bef8460c
*: clean up code format
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 16:34:56 -07:00
Gyuho Lee
7940113906
*: move internal "etcdserver/api/rafthttp"
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 10:31:16 -07:00
Gyuho Lee
04df89bc11
contrib/raftexample: rename internal packages
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
4a0bf23d1f
contrib/raftexample: rename "snapCount"
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:39:47 -07:00
Gyuho Lee
7a92bbfed2
etcdserver/*: move internal v2 packages
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:49:49 -07:00
Xiang Li
02ed51d300
Merge pull request #9657 from yaojingguo/remove-dead-code
...
contrib/raftexample: remove useless check
2018-05-01 10:19:35 -07:00
Jingguo Yao
0303480b1a
contrib/raftexample: fix typo
2018-05-01 11:22:36 +08:00
Jingguo Yao
cfa1efc7eb
contrib/raftexample: remove useless check
...
`err == raftsnap.ErrNoSnapshot` being false implies that
`err != raftsnap.ErrNoSnapshot` is true.
2018-04-29 11:34:44 +08:00
Gyuho Lee
9063805180
contrib/tools: support structured logger
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
9b5d6edc4b
*: revert "internal/raftsnap"
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
dee39bf786
internal/raftsnap: move "raftsnap" to internal
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:36:04 -08:00
Gyuho Lee
2b6fd3094f
*: rename "snap" to "raftsnap" package
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:26:07 -08:00
Gyu-Ho Lee
75110dd839
*: fix naked returns
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
2017-11-10 18:46:15 -08:00
Gyu-Ho Lee
f65aee0759
*: replace 'golang.org/x/net/context' with 'context'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
2017-09-07 13:39:42 -07:00
Gyu-Ho Lee
f78498b42a
contrib/raftexample: use bytes.Buffer.String (no 'string()')
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
2017-07-18 16:06:22 -07:00
Jackson Owens
74e020b715
contrib/raftexample: save snapshot to WAL first
...
Save the snapshot index to the WAL before saving the snapshot to the
filesystem. This ensures that we'll only ever call wal.Open with a
snapshot that was previously saved to the WAL.
2017-06-13 11:24:07 -07:00
Anthony Romano
887db5a3db
*: fix go tool vet -all -shadow errors
2017-06-03 21:32:36 -07:00
Anthony Romano
c8a2c7f64f
*: eschew you from documentation
...
Removed line wrapping in affected files as well.
2017-03-06 11:40:46 -08:00
Hitoshi Mitake
b6eedbacf9
contrib: suppress gosimple errors of raftexample
...
Travis claimed errors of gosimple like below
(https://travis-ci.org/coreos/etcd/jobs/208098545 ):
gosimple checking failed:
contrib/raftexample/raftexample_test.go:78:6: should write erri := <-clus.errorC[i] instead of erri, _ := <-clus.errorC[i]
contrib/raftexample/raftexample_test.go:114:10: should write err := <-eC instead of err, _ := <-eC
This commit fixes the errors.
2017-03-06 16:17:22 +09:00
Gyu-Ho Lee
0af1679b61
raftexample: load snapshot when opening WAL
...
Fix https://github.com/coreos/etcd/issues/7056 .
Previously we don't load snapshot when replaying WAL.
2016-12-30 17:28:57 -08:00
Vincent Lee
e8d06d8e4d
raftexample: confState should be saved after apply
2016-11-20 16:51:33 +08:00
Gyu-Ho Lee
113b27229b
raftexample: remove snapshot TODO in README
2016-09-21 05:07:04 -07:00
Gyu-Ho Lee
e4fbf7db00
raftexample: implement Raft snapshot
2016-09-21 04:23:05 -07:00
Gyu-Ho Lee
4b83f40618
raftexample: add index fields to filter entries
2016-09-21 04:23:05 -07:00
Gyu-Ho Lee
666d555450
raftexample: add snapshotter, handle Ready in raft
2016-09-21 04:23:05 -07:00
Gyu-Ho Lee
15fa8dd866
raftexample: add snapshot methods to kvstore
2016-09-21 04:23:01 -07:00
Brian Schroeder
b86e723107
contrib/raftexample: Restrict channel types
2016-07-18 17:19:54 -04:00
Gyu-Ho Lee
c1e3601776
raftexample: fixes from go vet, go lint
2016-06-22 12:04:15 -07:00
Anthony Romano
fc7da09d67
*: add missing godoc package descriptions
...
Fixes #4074
2016-05-27 15:15:26 -07:00
Gyu-Ho Lee
ef44f71da9
*: update LICENSE header
2016-05-12 20:51:48 -07:00
Gyu-Ho Lee
c09f23c46d
*: clean up bool comparison
2016-04-02 18:27:54 -07:00
Anthony Romano
bd832e5b0a
*: migrate Godeps to vendor/
2016-03-22 17:10:28 -07:00
Anthony Romano
02b24c58fd
contrib/raftexample: fix tests
...
os.Exit() on raft stop breaks out of the test fixture; instead,
monitor the error channel and exit on close
2016-02-10 11:49:13 -08:00
Anthony Romano
0cb304ec61
contrib/raftexample: fix restart path
...
The ConfChange fix crashes WAL replay because it assumed the node
always exists. Additionally, restart on a single node cluster
would deadlock because it had the wrong raft HardState.
To fix, replay path now goes through the regular raft loop.
Fixes #4474
2016-02-10 11:49:13 -08:00
Adam Wolfe Gordon
ffd61c0faf
contrib/raftexample: Update README to reflect dynamic configuration changes ( fixes #4018 )
2016-02-08 13:03:25 -07:00
Adam Wolfe Gordon
4a527be302
contrib/raftexample: Allow nodes to be removed from a running cluster
...
A node with ID n can be removed by DELETEing /n on the HTTP server.
2016-02-08 10:51:06 -07:00
Adam Wolfe Gordon
7c0b6d9be9
contrib/raftexample: Allow nodes to be added to a running cluster
...
A node with ID n can be added by POSTing the new node's URL to /n on the
HTTP server.
2016-02-08 10:51:06 -07:00
Adam Wolfe Gordon
7d862960cc
contrib/raftexample: Add a channel for proposing config changes
...
Add a channel over which we can propose cluster config changes to
raft. In an upcoming commit we'll add an HTTP endpoint that sends config
changes over this channel.
2016-02-08 10:51:06 -07:00
Adam Wolfe Gordon
eb7fef559d
contrib/raftexample: Handle conf change entries
...
So far we don't propose conf changes, but we'll be ready to handle them
when we do.
2016-02-08 10:51:03 -07:00
Adam Wolfe Gordon
a31f9a8af1
contrib/raftexample: Publish only committed entries
...
We shouldn't publish entries to the kvstore until they've been
committed.
2016-02-05 13:59:49 -07:00
Anthony Romano
20461ab11a
*: fix many typos
2016-01-31 21:42:39 -08:00
Anthony Romano
58ac6aeb5a
test: activate tests on contrib/raftexample
...
adds contrib/raftexample to integration tests and fixes two test races
2015-12-23 11:13:37 -08:00
chz
63bc804253
contrib/raftexample: shutdown rafthttp on closed proposal channel
...
Otherwise listening ports leak across unit tests and ports won't bind.
2015-12-21 13:03:42 -08:00
chz
b73a11ff45
contrib/raftexample: follow pipeline guidelines closer
...
close raft commit channel before issuing raft error since it's done
sending
2015-12-21 13:03:42 -08:00