Commit Graph

15089 Commits

Author SHA1 Message Date
e8dc4c5c25 integration: add TestMoveLeaderToLearnerError
Adding integration test TestMoveLeaderToLearnerError, which ensures that
leader transfer to learner member will fail.
2019-05-15 13:27:42 -07:00
44d935e90a etcdserver: exclude learner from leader transfer
1. Maintenance API MoveLeader() returns ErrBadLeaderTransferee if
transferee does not exist or is raft learner.

2. etcdserver TransferLeadership() only choose voting member as
transferee.
2019-05-15 13:27:42 -07:00
7f9479acc1 clientv3: add member promote 2019-05-15 13:27:42 -07:00
ba9fd620e8 etcdserver: support MemberPromote for learner 2019-05-15 13:27:42 -07:00
57a11eb1e1 integration: add TestKVForLearner
Adding TestKVForLearner. Also adding test utility functions for clientv3
integration tests.
2019-05-15 13:27:38 -07:00
43ed94f769 etcdserver: filter rpc request to learner
Hardcoded allowed rpc for learner node. Added filtering in grpc
interceptor to check if rpc is allowed for learner node.
2019-05-15 13:15:20 -07:00
355d0ab2a6 *: add learner field in endpoint status
Added learner field to endpoint status API.
2019-05-15 13:13:59 -07:00
42acdfcea7 Merge pull request #10668 from spzala/issuetriage
Doc: create issue and PR management guidelines
2019-05-15 10:30:36 -07:00
919b93b742 Merge pull request #10725 from jingyih/learner_part1
*: support raft learner in etcd - part 1
2019-05-14 20:35:48 -07:00
e1acf244c1 etcdserver: Add MemberAddAsLearner
Made changes to api/membership:

- Added MemberAddAsLearner
- Reverted changes to MemberAdd - removed input parameter isLearner
2019-05-14 18:18:10 -07:00
2b76200f70 *: add MemberAddAsLearner to clientv3 Cluster API
Made changes to Clientv3 Cluster API:

- Added MemberAddAsLearner.
- Reverted changes to MemberAdd - removed input parameter isLearner.
2019-05-14 16:56:44 -07:00
1e38de5b9d etcdctl: add learner field in member list output 2019-05-14 13:10:22 -07:00
e4296bbad9 tests/e2e: Add test for learner member add
Added an e2e test to exercise "etcdctl member add --learner".
2019-05-14 13:10:22 -07:00
a67d934410 etcdctl: support MemberAdd for learner
Added support for "etcdctl member add --learner".
2019-05-14 13:10:22 -07:00
fc14608cb7 clientv3: support MemberAdd for learner
Added IsLearner flag to clientv3 MemberAdd API.
2019-05-14 13:10:22 -07:00
604bc04f70 etcdserver: support MemberAdd for learner
Added IsLearner field to etcdserver internal Member type. Routed
learner MemberAdd request from server API to raft. Apply learner
MemberAdd result to server after the request is passed through Raft.
2019-05-14 13:10:22 -07:00
a0d3c4d641 *: fix compilation after API change
Fixed compilation erros after API change for learner.
2019-05-14 13:10:22 -07:00
7dc5451fae *: Change etcdserver API to support raft learner
- Added isLearner flag to MemberAddRequest in Cluster API.
- Added isLearner field to StatusResponse in Maintenance API.
- Added MemberPromote rpc to Cluster API.
2019-05-14 13:09:17 -07:00
a44a281ac3 CHANGELOG: remove mailing list reference
Recommendations for the production were bumped up recently. The related
ML email ref is old one so we should not provide the link.

Fixes #10669
2019-05-11 09:24:41 -04:00
d8c89021d7 Merge pull request #10689 from joshcc3/master
raft: cleanup wal directory if creation fails
2019-05-10 15:09:16 -07:00
a0c889d14b wal: add a test for wal cleanup, improve comments
To add test coverage of wal cleanup.
2019-05-10 22:36:26 +01:00
1411c585be etcdserver: fix typo in log message
Signed-off-by: Sam Batschelet <sbatsche@redhat.com>
2019-05-10 09:54:00 -04:00
886d30d223 Documentation: provide better user experience with autorefreshing grafana dashboard 2019-05-08 06:58:28 -04:00
f7f7e9c762 wal: Improve cleanup for robustness and debuggability
Rename wal with '.suffix.<timestamp>' instead of delete it and call cleanup when perr in a 'defer'ed statement.
2019-05-07 21:38:40 +01:00
51035bfd84 wal: cleanup wal directory if creation fails
delete <data-dir>/member/wal if any operation after the rename in
wal.Create fails to avoid reading an inconsistent WAL on restart.

Fixes #10688
2019-05-04 01:58:57 +01:00
39bbc66b46 Doc: create issue and PR management guidelines
I would like to propose a formal guide for issue triage and PR management.
This should help us keep open issues and PRs under a desirable numbers.
For example, keep issues under 100. These guidelines should specially help
manage and close issues and PRs that are inactive in a timely manner.
2019-05-03 17:03:17 -04:00
caee28a88e Merge pull request #10666 from mkumatag/fix_tests
Fix tests for latest golang
2019-05-03 11:18:58 -07:00
4d6ebafa54 Merge pull request #10704 from wilbeibi/master
raft: update raft paper link (previous link deprecated)
2019-05-03 09:34:02 -07:00
d68f60e9a0 raft: update raft paper link (previous link deprecated) 2019-05-03 08:50:16 -07:00
616592d9ba CHANGELOG: update
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-05-02 10:21:37 -07:00
e9f310af28 Merge pull request #10687 from rohitsardesai83/replace_ghodss_yaml_with_sigsk8sio_yaml
etcd: Replace yaml dependency `github.com/ghodss/yaml` with `sigs.k8s.io/yaml`
2019-05-02 09:47:33 -07:00
42a7ea6d33 etcd: Replace ghodss/yaml with sigs.k8s.io/yaml
To remove the dependency on ghodss/yaml. Replaced this dependency with sigs.k8s.io/yaml.
This wil help to remove the ghodss/yaml dependency from main kubernetes repository.

xref: https://github.com/kubernetes/kubernetes/issues/77024
2019-05-02 12:34:36 +05:30
e899023f3f Merge pull request #10640 from shrajfr12/gomodulecompat
Fix module path to have the major version to comply with go modules specification.
2019-05-01 22:46:03 -07:00
8a86a60fbc Merge pull request #10699 from jingyih/protect_tree_clone_with_write_lock
mvcc: protect tree clone with write lock
2019-05-01 13:25:31 -07:00
88922b0d08 mvcc: protect tree clone with write lock 2019-05-01 12:34:09 -07:00
fc6936863a Merge pull request #10582 from johncming/empty_update
clientv3/naming: ignore empty update.
2019-04-30 14:21:56 -07:00
1bd02b2053 Merge pull request #10595 from johncming/locking
clientv3: modify lock type.
2019-04-30 14:19:02 -07:00
e3f37534e1 Merge pull request #10684 from nvanbenschoten/nvanbenschoten/appendAndCopy
raft: Avoid multiple allocs when merging stable and unstable log
2019-04-30 11:51:32 -07:00
0bc219a91e Merge pull request #10679 from nvanbenschoten/nvanbenschoten/commitAlloc
raft: Avoid allocation when boxing slice in maybeCommit
2019-04-30 10:55:16 -07:00
efcc1088f0 Merge pull request #10680 from nvanbenschoten/nvanbenschoten/appendAlloc
raft: avoid allocation of Raft entry due to logging
2019-04-27 18:14:20 -07:00
41a0d67b30 Documentation: add links to blog post on benchmarking disks with fio
The documentation mentions fio as a tool to benchmark disks to assess
whether they are fast enough for etcd. But doing that is far from trivial,
because fio is very flexible and complex to use, and the user must make sure
that the workload fio generates mirrors the I/O workload of its etcd cluster
closely enough. This commit adds links to a blog post with an example of how
to do that.
2019-04-27 13:13:11 -04:00
9150bf52d6 go modules: Fix module path version to include version number 2019-04-26 15:29:50 -07:00
b5593de806 raft: Avoid multiple allocs when merging stable and unstable log
Appending to an empty slice twice could (and often did) result in
multiple allocations. This was wasteful. We can avoid this by performing
a single allocation with the correct size and copying into it.
2019-04-26 14:57:51 -04:00
24f35a9861 raft: avoid allocation of Raft entry due to logging
`raftpb.Entry.String` takes a pointer receiver, so calling it
on a loop variable was causing the variable to escape. Removing
the `.String()` call was enough to avoid the allocation, but
this also avoids a memory copy and prevents similar bugs.

This was responsible for 11.63% of total allocations in an
experiment with https://github.com/nvanbenschoten/raft-toy.
2019-04-26 14:56:31 -04:00
208b8a349c raft: Avoid allocation when boxing slice in maybeCommit
By boxing a heap-allocated slice header instead of the slice
header on the stack, we can avoid an allocation when passing
through the sort.Interface interface.

This was responsible for 26.61% of total allocations in an
experiment with https://github.com/nvanbenschoten/raft-toy.
2019-04-26 00:10:45 -04:00
cca0d5c1be Merge pull request #10672 from nolouch/fix-probing-log
api/rafthttp: fix the probing status log print
2019-04-24 23:05:23 -07:00
8146e1ebdf CHANGELOG-3.4: add json-iterator/go change
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-04-23 15:00:59 -07:00
1697c06df9 Merge pull request #10667 from dims/replace-ugorji-with-json-iterator
Replace ugorji/codec with json-iterator/go
2019-04-23 14:52:41 -07:00
3655a4b228 vendor: Run scripts/updatedeps.sh to cleanup unused code 2019-04-23 16:54:44 -04:00
daee668b75 client: Switch to case sensitive unmarshalling to be compatible with ugorji
Using lessons learned from k8s changes:
https://github.com/kubernetes/kubernetes/pull/65034

Change-Id: Ia17a8f94ae6ed00c5af2595c2b48d3c9a0344427
2019-04-23 16:54:44 -04:00