Compare commits

..

1791 Commits

Author SHA1 Message Date
Gyuho Lee
6890a9e633 Merge pull request #10018 from ymmt2005/fix_sample_conf
sample: correct directive name
2018-08-16 07:23:56 -07:00
ymmt
73a8bf1fb1 sample: correct directive name
Both "client-transport-security" and "peer-transport-security"
is mapped to Go struct embed.securityConfig.

Field for client certificate authentication is tagged as
"client-cert-auth", but it is misspelled in "peer-transport-security"
section.
2018-08-16 22:25:16 +09:00
Gyuho Lee
2a6bc7d113 Merge pull request #9997 from gyuho/snap-metrics
*: add v3 snapshot metrics (fsync, network)
2018-08-15 14:16:29 -07:00
Gyuho Lee
6f4c509ad8 etcdserver/api/rafthttp: add v3 snapshot send/receive metrics
Distribution would be:
0.1 second or more
...
25.6 seconds or more
51.2 seconds or more

etcd_network_snapshot_send_success
etcd_network_snapshot_send_failures
etcd_network_snapshot_send_total_duration_seconds
etcd_network_snapshot_receive_success
etcd_network_snapshot_receive_failures
etcd_network_snapshot_receive_total_duration_seconds

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-15 12:56:50 -07:00
Gyuho Lee
c392cd20cf etcdserver/api/snap: add v3 snapshot fsync metrics
etcd_snap_db_fsync_duration_seconds_count
etcd_snap_db_save_total_duration_seconds_bucket

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-15 12:56:44 -07:00
Gyuho Lee
e72730ab20 Merge pull request #10007 from ringtail/master
Document: add lucas to integrations.md
2018-08-15 00:01:14 -07:00
ringtail
acf176ac95 Document: add lucas to integrations.md
add lucas to integrations.md
2018-08-15 14:58:06 +08:00
Gyuho Lee
3c89938adf Merge pull request #9866 from spzala/checkhashkv
Tools: new benchmark for the hashkv performance
2018-08-13 19:20:42 -07:00
Gyuho Lee
18f85684da tools/benchmark: clean up formatting
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-13 19:19:46 -07:00
Gyuho Lee
f87b566248 Merge pull request #9998 from gyuho/member-id
etcdserver: add "etcd_server_id" metric
2018-08-13 00:39:48 -07:00
Gyuho Lee
eb6738053b etcdserver: add "etcd_server_id" metric
```
etcd_server_id{server_id="8e9e05c52164694d"} 1
```

Useful for automating membership change operations,
no need to run "endpoint status" or "member list"
command to get member IDs.

Also, useful for "etcd_network" metrics with "To/From" labels.

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2018-08-13 00:39:18 -07:00
Gyuho Lee
3a037744de Merge pull request #9990 from jingyih/dev_workload_analysis_tool
etcdserver: add grpc interceptor to log info on incoming request to etcdserver
2018-08-10 23:15:04 -07:00
Xiang Li
11dd0b583b Merge pull request #9982 from bdarnell/pagination
raft: Introduce CommittedEntries pagination
2018-08-11 09:12:46 +08:00
Jingyi Hu
368010d8a3 etcdserver: code clean up
Code clean up in interceptor.go
2018-08-10 16:29:42 -07:00
Gyuho Lee
59e084d37b Merge pull request #9991 from dlipovetsky/snapshot-file-permission-release-note
CHANGELOG: Add 3.4 changelog entry for snapshot file permissions change
2018-08-10 14:07:57 -07:00
Daniel Lipovetsky
f52a990340 CHANGELOG: Add 3.4 changelog entries for snapshot file permissions change 2018-08-10 13:37:25 -07:00
Jingyi Hu
30662940f4 vendor: add go-grpc-middleware
Rebased to master PR #9994.  Fixed a Go format issue in
v3rpc/interceptor.go.  Updated vendor to include go-grpc-middleware.
2018-08-10 13:15:35 -07:00
Sahdev P. Zala
40b66d1f18 Etcdctl: benchmark for hashkv performance
The benchmark as a sub command of put when provided will fetch hashkv and checks
the time taken to get it.

Fixed # 8910

Provider a way to etcd user to check how long it takes to get
hashkv in user enviornment. The command ouput will provide time taken
to get hashkv along with db file size.
2018-08-10 15:53:41 -04:00
Jingyi Hu
dc01734c6b etcdserver: add grpc interceptor to log info on incoming requests to
etcd server

To improve debuggability of etcd v3. Added a grpc interceptor to log
info on incoming requests to etcd server. The log output includes
remote client info, request content (with value field redacted), request
handling latency, response size, etc. Uses zap logger if available,
otherwise uses capnslog.

Also did some clean up on the chaining of grpc interceptors on server
side.
2018-08-10 11:01:07 -07:00
Gyuho Lee
457a96d931 Merge pull request #9994 from gyuho/grpc
vendor: upgrade google.golang.org/grpc to v1.14.0
2018-08-10 06:36:33 -07:00
Gyuho Lee
7e2e71ce7e words: whitelist "ErrConnClosing"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-09 20:01:35 -07:00
Gyuho Lee
6c6bc3a200 vendor: upgrade google.golang.org/grpc to v1.14.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-09 19:36:35 -07:00
Gyuho Lee
d726baf02c Gopkg.lock: regenerate with gRPC v1.14
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-09 19:36:18 -07:00
Gyuho Lee
aeb418b815 clientv3/integration: remove "transport.ErrConnClosing" match
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-09 19:27:37 -07:00
Gyuho Lee
4fa58fc062 Merge pull request #9993 from philips/dash-force-new-cluster
Documentation: v2: add -- for force new cluster
2018-08-09 10:47:01 -07:00
Brandon Philips
d05d522398 Documentation: v2: add -- for force new cluster
this doc is inconsistent between --force-new-cluster and
-force-new-cluster. Use the latter as it is the preferred option in
etcd.
2018-08-09 10:13:27 -07:00
Gyuho Lee
d984482d1b README: warn about repository transfer
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-08 14:08:37 -07:00
Sam Batschelet
2fe491851e Merge pull request #9977 from dlipovetsky/etcdctl-snapshot-permissions
clientv3: make saved snapshot readable by user only
2018-08-08 16:34:23 -04:00
Daniel Lipovetsky
ddde272fb0 clientv3: Make saved snapshot readable by user only
Fixes #9976
2018-08-08 12:46:17 -07:00
Xiang Li
6002bf37ba Merge pull request #9985 from bdarnell/flow-control
raft: Make flow control more aggressive
2018-08-08 10:11:54 -07:00
Ben Darnell
a9e7c1e11f raft: Make flow control more aggressive
We allow multiple in-flight append messages, but prior to this change
the only way we'd ever send them is if there is a steady stream of new
proposals. Catching up a follower that is far behind would be
unnecessarily slow (this is exacerbated by a quirk of CockroachDB's
use of raft which limits our ability to catch up via snapshot in some
cases).

See cockroachdb/cockroach#27983
2018-08-08 11:10:54 -04:00
Gyuho Lee
6c9a853f04 CHANGELOG: add links to "List of metrics"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-08 07:22:18 -07:00
Gyuho Lee
fdab22c9c6 Merge pull request #9979 from gyuho/20180802-vendor-grpc
vendor: upgrade gRPC to v1.14.0
2018-08-07 14:35:28 -07:00
Ben Darnell
0a670b7c9b raft: Introduce CommittedEntries pagination
The MaxSizePerMsg setting is now used to limit the size of
Ready.CommittedEntries. This prevents out-of-memory errors if the raft
log has become very large and commits all at once.
2018-08-07 12:54:34 -04:00
Gyuho Lee
9ad8f4c350 Merge pull request #9983 from gyuho/20180806-clientv3-docs
docs: update gRPC, add feature comparison
2018-08-07 04:28:07 -07:00
Gyuho Lee
3599938cf0 Merge pull request #9984 from gyuho/20180806-metrics-all
docs,tools/etcd-dump-metrics: automate metrics documentation
2018-08-07 04:27:25 -07:00
Gyuho Lee
b42a9ce20e MAINTAINERS: change gyuho's email to AWS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 20:54:41 -07:00
Ben Darnell
bc14deecca raft: Add a test for MaxSizePerMsg feature
Ensure that this limit is respected when generating MsgApp messages.
2018-08-06 16:52:16 -04:00
Gyuho Lee
902893f231 docs: add all v3.1 metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 10:02:22 -07:00
Gyuho Lee
2c1c191566 docs: add all v3.2 metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:54:18 -07:00
Gyuho Lee
e83d6c2234 docs: add all v3.3 metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:31:53 -07:00
Gyuho Lee
cf5dc560c8 tools/etcd-dump-metrics: automate metrics fetch from release binaries
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:30:52 -07:00
Gyuho Lee
f457aafaf1 docs: move metrics files to sub-directory
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:29:52 -07:00
Gyuho Lee
9d1114f0db docs: update monitoring index
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:28:59 -07:00
Gyuho Lee
0d189c661a docs: add "Client Feature Matrix"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:21:47 -07:00
Gyuho Lee
fd000ae7ec docs: update to "grpc1.14"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:21:33 -07:00
Gyuho Lee
29590c9ab2 docs/img: update client architecture images
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-06 09:20:58 -07:00
Gyuho Lee
981644af7d scripts/updatedep: remove "dep prune" command
"Pruning is now performed automatically by dep ensure."

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-02 08:06:27 -07:00
Gyuho Lee
612266beaf vendor: upgrade gRPC to v1.14.0
https://github.com/grpc/grpc-go/releases/tag/v1.14.0

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-08-02 07:59:52 -07:00
Xiang Li
93be31d43a Merge pull request #9968 from Quasilyte/quasilyte/fixCaseOrder
etcdctl/ctlv2/command: fix type switch case order
2018-07-29 11:38:31 -07:00
Xiang Li
fa20b61c9f Merge pull request #9970 from Quasilyte/quasilyte/namedConst
contrib/recipes: use clientv3.NoLease instead of 0
2018-07-29 11:37:39 -07:00
Xiang Li
d1f49d4a40 Merge pull request #9969 from Quasilyte/quasilyte/boolExprSimplify
etcdserver/api/v2discovery: simplify !(x == y) to x != y
2018-07-28 15:47:05 -07:00
Iskander Sharipov
1de9e1b00d contrib/recipes: use clientv3.NoLease instead of 0
If we have a named const, it's more readable to use that.

Found using https://go-critic.github.io/overview#namedConst-ref
2018-07-28 23:56:45 +03:00
Iskander Sharipov
d0f800c930 etcdserver/api/v2discovery: simplify !(x == y) to x != y
Found using https://go-critic.github.io/overview#boolExprSimplify-ref
2018-07-28 23:47:17 +03:00
Iskander Sharipov
3da90b6d3e etcdctl/ctlv2/command: fix type switch case order
Since syscall.Errno implements net.Error and all cases
are matched sequentially, it's a mistake to put syscall.Errno
case after net.Error since it will never be executed.

This change swaps syscall.Errno case with net.Error
to give that clause chance to execute.
2018-07-28 23:33:13 +03:00
Gyuho Lee
90a2fbe50e Merge pull request #9966 from gyuho/maintainer
MAINTAINERS: add Joe Betz
2018-07-27 17:34:06 -07:00
Gyuho Lee
df2190e382 MAINTAINERS: add Joe Betz
Joe has been helping fix lots of bugs and involved
in critical feature design/implementation,
plus leading patch release process for over a year.

Thanks for your excellent work.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-27 17:03:24 -07:00
Gyuho Lee
f337e1b363 Merge pull request #9954 from spzala/etcdctlput
etcdctl: value should not be provided after \r
2018-07-27 13:50:49 -07:00
Gyuho Lee
d16c8b3880 Merge pull request #8689 from nvanbenschoten/nvanbenschoten/commit
raft: don't allocate slice and sort on every commit
2018-07-27 13:50:04 -07:00
Joe Betz
1c382a4868 Merge pull request #9945 from jpbetz/balancer-maintanance-api-fix
clientv3: Fix maintenance APIs to directly dial grpc endpoints directly
2018-07-27 10:15:25 -07:00
Joe Betz
67bcf28c4e clientv3: Use passthrough resolver for direct endpoint dialing 2018-07-27 10:15:02 -07:00
Nathan VanBenschoten
0a415cf0d6 raft: dont allocate slice and sort on every commit 2018-07-25 23:42:16 -04:00
Gyuho Lee
c5bef4f731 CHANGELOG-3.3: update date
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-24 11:12:21 -07:00
Gyuho Lee
54d2b327f6 Merge pull request #9961 from jpbetz/changelog-checkpoints
CHANGELOG: Add 3.4 changelog entry for lease checkpointing feature
2018-07-24 11:11:36 -07:00
Gyuho Lee
9661648869 Merge pull request #9960 from jpbetz/changelog-3.1.19-3.2.24
CHANGELOG: Record CHANGELOG release dates for 3.1.19 and 3.2.24
2018-07-24 11:11:15 -07:00
Joe Betz
a2ecd6b676 clientv3: Simplify TestDialTLSNoConfig now that dial with grpc.WithBlock correctly results in a client timeout error 2018-07-24 10:45:03 -07:00
Joe Betz
29ef8ec899 CHANGELOG: Add 3.4 changelog entry for lease checkpointing feature 2018-07-24 10:37:01 -07:00
Joe Betz
703c1b9175 CHANGELOG: Record CHANGELOG release dates for 3.1.19 and 3.2.24 2018-07-24 10:31:06 -07:00
Gyuho Lee
dd440690c5 Merge pull request #9950 from gyuho/doc-metrics
docs: automate metrics list documentation
2018-07-24 10:23:55 -07:00
Gyuho Lee
69ae028039 Merge pull request #9948 from wenjiaswe/changelog47892
CHANGELOG-3.2: update from #7892
2018-07-24 09:56:01 -07:00
Wenjia Zhang
7b71022987 CHANGELOG-3.2: update from #7892 2018-07-24 09:42:42 -07:00
Joe Betz
750b87d622 Merge pull request #9924 from jpbetz/persist-lease-deadline
lease: Persist remainingTTL to prevent indefinite auto-renewal of long lived leases
2018-07-24 09:39:57 -07:00
Gyuho Lee
6e0c0d0b9a CHANGELOG: track clientv3 fix, etcd_server_go_version
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-23 16:30:33 -07:00
Joe Betz
d1de41efe1 lease: Add unit and integration tests for lease checkpointing 2018-07-23 16:12:42 -07:00
Joe Betz
2edb954bce lease: Checkpoint lease TTLs to prevent indefinite auto-renewal of long lived leases 2018-07-23 16:12:34 -07:00
Gyuho Lee
3f725e190e Merge pull request #9957 from gyuho/go-version
etcdserver: add "etcd_server_go_version" metric
2018-07-23 12:50:20 -07:00
Joe Betz
b3b06a862a clientv3: Fix maintenance APIs to directly dial grpc endpoints correctly. 2018-07-23 11:20:15 -07:00
Sahdev P. Zala
b43fdbcfa4 ETCDCTL: value can not be provided after \r
Document that etcdctl do not support providing value after using \r and that multiple lines
or spaces requires to be double-quoted.

Fixed #9937
2018-07-23 14:11:40 -04:00
Gyuho Lee
643d791a11 etcdserver: add "etcd_server_go_version" metric
Currently, one has to look at server logs manually,
to see what Go version was used to build etcd server.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-23 09:15:22 -07:00
Gyuho Lee
0458c5d54b Merge pull request #9951 from gyuho/revive
*: integrate https://github.com/mgechev/revive with fmt tests
2018-07-23 06:39:33 -07:00
Xiang Li
e4e347133e Merge pull request #9952 from gyuho/fix-keepalive
clientv3: fix keepalive send interval when response queue is full
2018-07-22 22:20:23 -07:00
Gyuho Lee
e93fb56037 clientv3: clean up variables, add response dropping warning
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-22 17:59:38 -07:00
Gyuho Lee
f3385418bb clientv3: fix keepalive send interval when response queue is full
client should update next keepalive send time
even when lease keepalive response queue becomes full.

Otherwise, client sends keepalive request every 500ms
regardless of TTL when the send is only expected to happen
with the interval of TTL / 3 at minimum.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-22 17:59:32 -07:00
Gyuho Lee
752dd3a0bf docs: generate metrics-*
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-22 00:34:26 -07:00
Gyuho Lee
ac936365bb tools/etcd-dump-metrics: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-22 00:34:22 -07:00
Gyuho Lee
bd6c6cf9e2 docs: clean up FAQs, add initial lists of metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-22 00:15:53 -07: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
6ab3cc0a2e mvcc: clean up code format
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 16:03:16 -07:00
Gyuho Lee
51af6a062f etcdserver: clean up code format
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 16:03:16 -07:00
Gyuho Lee
90a5da18cf clientv3: clean up code format
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 16:03:12 -07:00
Gyuho Lee
15a81f2d5c pkg: clean up code format
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 15:49:58 -07:00
Gyuho Lee
6fabe6d5ab wal: clean up code format
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 15:49:58 -07:00
Gyuho Lee
1c04820026 tests: integrate "github.com/mgechev/revive" to fmt tests
https://github.com/mgechev/revive

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-21 15:49:53 -07:00
Gyuho Lee
104b6a3424 docs: fix README
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-20 15:32:11 -07:00
Gyuho Lee
e4faaf7e29 Merge pull request #9947 from gyuho/docs-docs
docs: add initial operate guide structure
2018-07-20 15:29:43 -07:00
Gyuho Lee
88a42d91b8 Merge pull request #9946 from gyuho/log-log
etcdserver: support zap.Logger in FD monitoring routine
2018-07-20 15:29:28 -07:00
Gyuho Lee
9f02c5836d docs: add initial operate guide structure
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-20 15:27:39 -07:00
Gyuho Lee
40034c45ab docs/README: document how to build locally
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-20 15:16:52 -07:00
Gyuho Lee
57ec2226cc etcdserver: support zap.Logger in FD monitoring routine
Keep replacing capnslog

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-20 14:59:03 -07:00
Gyuho Lee
98f54ec3f5 Merge pull request #9943 from wenjiaswe/changelog49942
CHANGELOG-3.2: update from #9942
2018-07-20 14:33:09 -07:00
Wenjia Zhang
fa42a1f7fb CHANGELOG-3.2: update from #9942 2018-07-20 13:52:15 -07:00
Gyuho Lee
938310760e Merge pull request #9941 from wenjiaswe/changelog4metrics
CHANGELOG-3.3: update from #9940
2018-07-20 09:36:04 -07:00
Wenjia Zhang
a47f0a0dba CHANGELOG-3.3: update from #9940 2018-07-20 09:31:03 -07:00
Gyuho Lee
e9f710e742 Merge pull request #9934 from mbrannock/master
Eliminate direct use of the gRPC transport package
2018-07-19 13:48:40 -07:00
Matt Brannock
520bd5084e integration, functional: Eliminate direct use of gRPC transport pkg
gRPC has moved the transport package to an internal-only directory. This
eliminates direct use of the transport package in the stress test in
favor of the error code from gRPC that represents a connection problem.

https://godoc.org/google.golang.org/grpc/internal/transport is the new
location for the package, which says it's not intended to be imported
directly. Instead, the maintainers suggested to use the code Unavailable
to detect a connection problem.

This change slightly reorganizes the stresser test error handling.
2018-07-19 10:55:57 -07:00
Gyuho Lee
f76cf959b2 Makefile: remove Go 1.9.7
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-19 10:23:44 -07:00
Gyuho Lee
ac4d713506 CHANGELOG-3.3: add "Go 1.10.3" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-19 10:23:30 -07:00
Gyuho Lee
f830013615 Merge pull request #9936 from jyparketc/fix_typo_in_readme
Documentation/etcd-mixin: fix typo in README.md
2018-07-19 06:12:16 -07:00
Joonyoung Park
bd74c10fdb Documentation/etcd-mixin: fix typo in README.md
Promethues -> Prometheus
2018-07-19 19:10:46 +09:00
Gyuho Lee
eef61324ed Merge pull request #9929 from jolson490/remove-http-alerts_from-mixin
Removing http alerts (that were specific to etcd v2) from mixin.libsonnet
2018-07-18 17:36:16 -07:00
Joshua Olson
3826107af6 Documentation: removing alerts that were specific to etcd v2 2018-07-18 12:31:46 -04:00
Joe Betz
bbe2d777b1 lease: Add LessorConfig and wire zap logger into Lessor 2018-07-17 13:10:34 -07:00
Joe Betz
75ac18cd2d lease: Add and lease checkpoint protobuf types 2018-07-17 11:54:51 -07:00
Gyuho Lee
688043a7c2 Merge pull request #9916 from gyuho/upgrade-doc-index
Documentation/upgrades: update upgrade doc indexes
2018-07-11 06:59:41 -07:00
Gyuho Lee
d9cde03fe0 Documentation/upgrades: update upgrade doc indexes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-10 15:30:29 -07:00
Gyuho Lee
db102de675 Merge pull request #9914 from gyuho/protoc
*: require protoc 3.6.0
2018-07-10 10:30:50 -07:00
Gyuho Lee
befc5cbb59 functional/scripts: use protoc 3.6.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-10 10:17:10 -07:00
Gyuho Lee
453db62d84 scripts/genproto: use protoc 3.6.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-10 10:16:37 -07:00
Gyuho Lee
8f84f72df0 Merge pull request #9913 from gyuho/log
*: combine all configuration print logs to embed.StartEtcd
2018-07-09 13:21:56 -07:00
Gyuho Lee
3ac4d208ac embed: combine all info-print functions
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-09 12:32:47 -07:00
Gyuho Lee
60c63fa34e etcdmain: remove version/system info print methods
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-09 11:26:53 -07:00
Gyuho Lee
ddf45cb958 etcdserver: remove configuration print methods
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-09 11:26:23 -07:00
Gyuho Lee
e23853a9ed Merge pull request #9910 from Cjen1/master
benchmark: Create README.md
2018-07-09 09:39:13 -07:00
Cjen1
9d96a24de1 benchmark: Create README.md
When trying to run the benchmark I found little documentation on how to
run the benchmark.
2018-07-09 10:37:53 +01:00
Gyuho Lee
f7b3017752 Merge pull request #9467 from ouqiang/patch-1
Documentation/integrations: add PHP v3 client
2018-07-06 10:29:58 -07:00
Gyuho Lee
dbccfe06fb clientv3/balancer: debugging balancer test failures
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 12:18:13 -07:00
Gyuho Lee
3e7d49079c Merge pull request #9906 from gyuho/dockerfile
*: revert back to ubuntu test image, fix "unconvert" linter warnings
2018-07-05 11:58:30 -07:00
Gyuho Lee
7e542078bc clientv3/balancer: skip "TestRoundRobinBalancedResolvableFailoverFromServerFail" for now
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 11:57:45 -07:00
Gyuho Lee
6a16c7974a tests/e2e: handle cipher suite mismatch error in ubuntu
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:50:07 -07:00
Gyuho Lee
e388a4a1a1 mvcc: simplify increment "rrev"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:28:10 -07:00
Gyuho Lee
7aaaa0d82f raft: do not use underscore in var name
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:25:47 -07:00
Gyuho Lee
9934034bb1 etcdserver: remove unnecessary if-statement
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:25:00 -07:00
Gyuho Lee
0249c39cb3 raft: remove unnecessary type conversion
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:12:45 -07:00
Gyuho Lee
b01d560be0 tests/e2e: remove unnessary type conversion
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:10:30 -07:00
Gyuho Lee
bc18474029 mvcc: remove unnecessary type conversion
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:09:53 -07:00
Gyuho Lee
e714dd01b3 etcdserver: remove unnecessary type conversion
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:08:56 -07:00
Gyuho Lee
e1a978c3ce tests/Dockerfile: revert back to ubuntu
Fedora is too big (550 MB),
while Ubuntu image is only 350 MB.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 10:07:11 -07:00
Gyuho Lee
0a31a2bac2 CHANGELOG: add Go versions, Watcher.RequestProgress
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-05 09:43:28 -07:00
Xiang Li
1e5c381664 Merge pull request #9903 from brancz/remove-http-alerts
Documentation/op-guide: Remove HTTP alerts
2018-07-04 08:43:14 -07:00
Frederic Branczyk
67ecea9709 Documentation/op-guide: Remove HTTP alerts
The HTTP metrics have been deprecated and removed. In other places all
the HTTP related alerts have already been removed, this is just a clean
up of the remaining places these were left.
2018-07-04 09:04:47 +02:00
Gyuho Lee
e4425ee79f CHANGELOG: add monitoring/metrics changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-03 14:59:44 -07:00
Gyuho Lee
3e1d635dbe CHANGELOG-3.4: clarify "etcd_mvcc_db_total_size_in_bytes" rename change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-03 13:46:46 -07:00
Gyuho Lee
4588f89c7a CHANGELOG: backport quota size limit metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-03 13:31:52 -07:00
Gyuho Lee
0aed7e0026 CHANGELOG: clarify debugging metrics, backend quota metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-03 13:18:44 -07:00
Gyuho Lee
1168a92491 CHANGELOG: update July patch releases
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-03 13:05:36 -07:00
Gyuho Lee
dc93262332 CHANGELOG: add "etcd_server_slow_read_indexes_total"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-03 12:50:12 -07:00
Gyuho Lee
495eb2f230 Merge pull request #9897 from gyuho/read-index
etcdserver: clarify read index warnings, add metrics
2018-07-03 11:31:02 -07:00
Gyuho Lee
37000cc4b8 etcdserver: add "etcd_server_slow_read_indexes_total"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-02 12:58:35 -07:00
Gyuho Lee
4733a1db5c etcdserver: clarify read index warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-07-02 12:53:35 -07:00
Gyuho Lee
308f59058c Merge pull request #9896 from xmudrii/grpc-changelog
Update CHANGELOG-3.2 to include changes from #9894
2018-07-02 11:07:35 -07:00
Marko Mudrinić
21d7f14e4c CHANGELOG: update CHANGELOG-3.2 to include TLS gRPC Proxy changes 2018-07-02 20:00:20 +02:00
Gyuho Lee
9782ba91a8 Merge pull request #9891 from mitake/maintainers
MAINTAINERS: update @mitake's email address
2018-06-28 22:38:36 -07:00
Hitoshi Mitake
c15b674d7a MAINTAINERS: update @mitake's email address 2018-06-29 14:25:29 +09:00
Gyuho Lee
902541c038 docs/faq: remove "you"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-28 22:15:15 -07:00
Joe Betz
4df18a7316 Merge pull request #9869 from jpbetz/progress
*: Add progress notify request watch request
2018-06-28 10:46:01 -07:00
Joe Betz
4b51b6de49 *: Add progress notify request watch request 2018-06-27 16:46:13 -07:00
Gyuho Lee
b56fc94829 Merge pull request #9889 from gyuho/doc-faq
docs: add "FAQs"
2018-06-27 10:58:21 -07:00
Gyuho Lee
cd6100ca30 docs: add "FAQs"
Copied from https://github.com/coreos/etcd/blob/master/Documentation/faq.md.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-27 10:56:06 -07:00
Hitoshi Mitake
54e2511b25 Merge pull request #9883 from joelegasse/jwt
auth: Support all JWT algorithms
2018-06-27 17:12:56 +09:00
Gyuho Lee
eb0a10da8a Merge pull request #9887 from bdarnell/become-leader
raft: Really avoid scanning raft log in becomeLeader
2018-06-26 13:31:08 -07:00
Joe LeGasse
67488a7c27 CHANGELOG-3.4: JWT signing methods 2018-06-26 16:31:01 -04:00
Joe LeGasse
a6ddb51c8a auth: Support all JWT algorithms
This change adds support to etcd for all of the JWT algorithms included
in the underlying JWT library.
2018-06-26 16:31:01 -04:00
Gyuho Lee
61354ff8ed Merge pull request #9886 from zultron/patch-1
clustering.md:  SRV records in DNS SAN for TLS
2018-06-26 13:02:45 -07:00
Ben Darnell
20422c5b4d raft: Really avoid scanning raft log in becomeLeader
I meant to do this in #9073, but sent the PR before it was finished.
The last log index is known directly; there is no need to fetch any
entries here.
2018-06-26 15:29:51 -04:00
John Morris
b51d4a3d06 clustering.md: SRV records in DNS SAN for TLS
Using SRV discovery with TLS, the SRV record must be in the DNS SAN or clustering will fail.

This is a new requirement and may cause mysterious failures when upgrading from 3.1 to 3.2.  I was only able to fix this in our configuration after reading through #8445; and now I understand the problem it's clear the docs have a hole here.
2018-06-26 11:51:58 -05:00
Gyuho Lee
8f6348a97d docs: use gRPC v1.13.0
TODO: update images

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-22 10:58:04 -07:00
Gyuho Lee
66ce483bcb CHANGELOG-3.4: use gRPC v1.13.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-22 10:57:32 -07:00
Gyuho Lee
5e1cd9d804 Merge pull request #9876 from gyuho/grpc
vendor: upgrade gRPC v1.13.0
2018-06-22 10:52:39 -07:00
Gyuho Lee
c65fd7d7ef vendor: upgrade gRPC v1.13.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-21 13:46:40 -07:00
Gyuho Lee
acf75ddc5b Merge pull request #9870 from raoofm/patch-14
docs: mirror_maker, rm readOnly, add uni-directional
2018-06-21 13:36:13 -07:00
Raoof Mohammed
053810b0b6 docs: mirror_maker, rm readOnly, add uni-directional
mirror_maker doc mentioned "Data under the destination cluster’s mirroring prefix should be treated as read only."

To avoid confusion, read only is being removed and a clear statement mentions that the updated values at destination wont be replicated from destination to origin.

wont -> won't
2018-06-21 16:34:30 -04:00
Gyuho Lee
7648841bad Merge pull request #9872 from gyuho/watch-clientv3
clientv3: clarify "WithRequireLeader" for network partition
2018-06-20 10:46:23 -07:00
Gyuho Lee
11ead62b9d clientv3: clarify "WithRequireLeader" for network partition
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-20 10:28:41 -07:00
Gyuho Lee
82db651474 Merge pull request #9868 from wenjiaswe/minorchange
etcd-dump-logs: minor editting in README.md
2018-06-19 15:50:05 -07:00
Wenjia Zhang
7e0ae96c6a etcd-dump-logs: minor editting in README.md 2018-06-19 15:37:04 -07:00
Gyuho Lee
897c055940 Merge pull request #9865 from gyuho/aaa
tests/e2e: do not run cipher suite tests for gRPC proxy
2018-06-19 13:00:33 -07:00
Gyuho Lee
08474ed5bd tests/e2e: do not run cipher suite tests for gRPC proxy
```
../../bin/etcd-30074: 2018-06-19 11:49:12.052662 I | etcdmain: v2 proxy started listening on client requests on "https://localhost:20002"
../../bin/etcd-30083: Error: unknown flag: --cipher-suites
../../bin/etcd-30083: Usage:
../../bin/etcd-30083:   etcd grpc-proxy start [flags]
```

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-19 11:49:59 -07:00
Gyuho Lee
55a05d9615 Merge pull request #9862 from gyuho/travis
tests: switch between Travis and Semaphore
2018-06-18 14:03:24 -07:00
Gyuho Lee
6d15396bc7 clientv3: add link to architecture docs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 13:51:20 -07:00
Gyuho Lee
f3ec7d2aed tests: move "amd64-unit" to travis
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 13:37:52 -07:00
Gyuho Lee
6931e9dd23 tests/semaphore: remove coverage, grpcproxy tests, add unit tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 13:24:20 -07:00
Gyuho Lee
1eaba4195e travis: remove unit tests, run grpcproxy, coverage tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 13:23:59 -07:00
Gyuho Lee
a205cfe858 Merge pull request #9861 from gyuho/race
etcdserver/api/v3rpc: remove duplicate gRPC logger set
2018-06-18 11:39:08 -07:00
Gyuho Lee
d456c0beb4 integration: disable embed tests with gRPC proxy for now
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 11:30:52 -07:00
Gyuho Lee
339cda03b3 etcdserver/api/v3rpc: remove duplicate gRPC logger set
Fix

=== RUN   TestEmbedEtcd
==================
WARNING: DATA RACE
Write at 0x000001df86d0 by goroutine 711:
  github.com/coreos/etcd/embed.(*Config).setupLogging.func1()
      /go/src/github.com/coreos/etcd/vendor/google.golang.org/grpc/grpclog/loggerv2.go:68 +0x16c
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:44 +0xe1
  github.com/coreos/etcd/embed.(*Config).setupLogging()

in gRPC proxy tests.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 09:41:37 -07:00
Gyuho Lee
b98f0c9190 CHANGELOG-3.4: fix --cipher-suites flag change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-18 09:25:34 -07:00
Gyuho Lee
d866cf8a9e Merge pull request #9860 from gyuho/new-balancer-april-2018
clientv3: Upgrade to round robin balancer based on gRPC 1.12 balancer API
2018-06-15 18:13:41 -07:00
Joe Betz
cb6e9d2a7e CHANGELOG: Add PR and issue links for new client balancer 2018-06-15 16:46:40 -07:00
Joe Betz
8451a1715f clientv3: Enable balancer logging if ETCD_CLIENT_DEBUG environment variable is set 2018-06-15 16:28:36 -07:00
Gyuho Lee
aa03eba788 Merge pull request #9859 from wenjiaswe/eddreamdme
etcd-dump-logs: minor change in README.md
2018-06-15 15:36:56 -07:00
Wenjia Zhang
854e9e1174 etcd-dump-logs: minor change in README.md 2018-06-15 15:30:11 -07:00
Joe Betz
6309e4b4cf docs: Add client architecture doc 2018-06-15 14:47:11 -07:00
Joe Betz
6572d605ad vendor: Bump to grpc v1.12.2 2018-06-15 14:47:11 -07:00
Gyuho Lee
d922069713 grpcproxy: fix "grpc.ErrClientConnClosing" handling
Fix

```
go test -v -tags cluster_proxy -run TestWatchErrConnClosed
```

with gRPC >= v1.10

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 14:47:11 -07:00
Gyuho Lee
6e521d2f3f clientv3: add "IsConnCanceled", deprecate "grpc.ErrClientConnClosing"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 14:47:08 -07:00
Gyuho Lee
a76681073d clientv3: add "zap.Config" to replace global logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
08da08bb19 clientv3: clarify retry function names, do not retry on dial error
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
dd520cebd4 clientv3: put "defaultCallOpts" back to "Client" object
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
a3032d3d0b *: fix fmt tests, reenable "testEmbedEtcdGracefulStop"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Joe Betz
3b84117f54 clientv3/integration: Add err check to TestDialTLSNoConfig to prevent nil pointer dereference on c.Close() 2018-06-15 13:41:28 -07:00
Joe Betz
05c57a0ea4 integration: Fix unit test failures from new grpc LB changes, fix bom 2018-06-15 13:41:28 -07:00
Joe Betz
55ef9cc1d0 clientv3: Add auth retry to retry interceptor 2018-06-15 13:41:28 -07:00
Gyuho Lee
3130e4da1c vendor: add "go-grpc-middleware/util/backoffutils"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Joe Betz
a5b2fb5563 clientv3: Introduce custom retry interceptor based on go-grpc-middleware/retry 2018-06-15 13:41:28 -07:00
Gyuho Lee
4065735845 clientv3: remove unused "dialerrc"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Joe Betz
1f6548b751 clientv3: Stop expecting retry in integration tests with new grpc balancer 2018-06-15 13:41:28 -07:00
Joe Betz
8569b9c782 clientv3: Fix endpoint resolver to create a new resolver for each grpc client connection 2018-06-15 13:41:28 -07:00
Joe Betz
9304d1abd1 clientv3: Fix TLS test failures by returning DeadlineExceeded error from dial without any additional wrapping 2018-06-15 13:41:28 -07:00
Joe Betz
ee2747eba8 clientv3: Fix dial calls to consistently use endpoint resolver, attempt to deflake alarm test 2018-06-15 13:41:28 -07:00
Joe Betz
f84f554301 clientv3: Fix auth client to use endpoints instead of host when dialing, fix tests to block on dial when required. 2018-06-15 13:41:28 -07:00
Joe Betz
66e65cd660 clientv3: Avoid timeouts in ordering test 2018-06-15 13:41:28 -07:00
Gyuho Lee
bb032f3e5f clientv3: deprecate "grpc.WithTimeout" in favor of "grpc.DialContext"
"grpc.WithTimeout" dial option is being deprecated.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
994a569f53 clientv3: pass "grpc.WithBlock" on "TestDialTimeout"
Otherwise, grpc.DialContext would just return before
connection is up.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
037d7b4abe clientv3: dial with context when creating authenticator
Otherwise, "grpc.Dial" blocks when "grpc.WithTimeout" dial
option gets deprecated.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Joe Betz
7ac2a2dd20 clientv3: Fix dialer for new balancer to correctly handle first are as endpoint, not hostname 2018-06-15 13:41:28 -07:00
Joe Betz
309208dbef clientv3: Split out grpc balancer builder to ensure there is a balancer per ClientConn 2018-06-15 13:41:28 -07:00
Joe Betz
12acfc057a vendor: upgrade grpc/grpc-go to v1.11.3 2018-06-15 13:41:28 -07:00
Joe Betz
f20a1173d8 clientv3: Fix new load balancer integration issues 2018-06-15 13:41:28 -07:00
Joe Betz
6080fa1270 clientv3: Integrate new grpc load balancer interface with etcd client 2018-06-15 13:41:28 -07:00
Joe Betz
ed6bc2b554 clientv3: add load balancer unix socket test 2018-06-15 13:41:28 -07:00
Joe Betz
4d2a25b056 clientv3/balancer: add endpoints resolver 2018-06-15 13:41:28 -07:00
Gyuho Lee
9867210a54 clientv3/balancer: add "TestRoundRobinBalancedPassthrough" (WIP)
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
370761de82 clientv3/balancer: add more failover tests with resolver
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
7c92185fe3 clientv3/balancer: use new mock server in tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
f1aa428a38 pkg/mock/mockserver: support restart
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Joe Betz
657c2e15cc *: introduce mock server for testing load balancing and add a simple happy-path load balancer test
Author:    Joe Betz <jpbetz@google.com>
Date:      Wed Mar 28 15:51:33 2018 -0700
2018-06-15 13:41:28 -07:00
Gyuho Lee
7fe4a08fdc clientv3/balancer: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
6e2bf40015 vendor: upgrade "grpc/grpc-go" to v1.11.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:41:28 -07:00
Gyuho Lee
b241e383fd Merge pull request #9858 from gyuho/lll
etcdserver: clean up election tick timeout log output
2018-06-15 13:40:44 -07:00
Gyuho Lee
bd8ab3df93 Merge pull request #9857 from gyuho/quota-log
etcdserver: log quota only once
2018-06-15 13:40:30 -07:00
Gyuho Lee
52ffe9f79a etcdserver: clean up election tick timeout log output
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:35:25 -07:00
Gyuho Lee
929d390520 etcdserver: log quota only once
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:13:44 -07:00
Gyuho Lee
8990126c17 rafthttp: add "RaftDropHeartbeat" failpoint
To simulate network partition locally.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:10:58 -07:00
Gyuho Lee
9a7205cac8 README: fix docs badge 2018-06-15 13:10:58 -07:00
Gyuho Lee
c7ca32b143 README: add "https://etcd.readthedocs.io/en/latest" badge 2018-06-15 13:10:58 -07:00
Gyuho Lee
1136ba0e0d raft: fix logger variadic parameter
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-15 13:10:58 -07:00
Gyuho Lee
9054786553 Revert "raft: fix logger Panic variadic parameter"
This reverts commit 5a94aba33eeb504e7036a27268c67f6a1796445e.
2018-06-15 13:10:58 -07:00
sudeesh john
e07d19e549 raft: fix logger Panic variadic parameter
"# github.com/coreos/etcd/raft
raft/logger.go:117: missing ... in args forwarded to print-like function"

New parameter check got added the golang to check the function parameter
c006036075 (diff-8fa5b0d6191706747ef5773f895781c9)
2018-06-15 13:10:58 -07:00
Gyuho Lee
7ae862cba5 CHANGELOG-3.3: update date 2018-06-15 13:10:58 -07:00
Gyuho Lee
7e42c66c34 words: whitelist "__lostleader" from watcher branch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-14 16:14:01 -07:00
Gyuho Lee
de950842c5 words: whitelist more from balancer branch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-14 15:19:26 -07:00
Gyuho Lee
7bc414897e words: add more from balancer branch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-14 15:04:29 -07:00
Gyuho Lee
5ba680d762 docs: initial commit for architecture docs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-14 12:56:09 -07:00
Gyuho Lee
13e7447a2d CHANGELOG-3.2: highlight watch client backport
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-14 10:53:37 -07:00
Gyuho Lee
edab6486c4 CHANGELOG: highlight vendor updates, clientv3 change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-14 10:45:39 -07:00
Gyuho Lee
410d28c976 Merge pull request #9840 from liggitt/client-hotloop
Backoff on reestablishing watches when Unavailable errors are encountered
2018-06-14 09:34:02 -07:00
Gyuho Lee
03cec4acb9 Merge pull request #9849 from wenjiaswe/changelog49848
CHANGELOG-3.1: update from #9848
2018-06-13 16:48:53 -07:00
Wenjia Zhang
85fc165249 CHANGELOG-3.1: update from #9848 2018-06-13 16:43:53 -07:00
Gyuho Lee
51a209c56f Makefile: grep "DATA RACE" for tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 16:24:08 -07:00
Gyuho Lee
ecd769c11a Merge pull request #9846 from wenjiaswe/changelog49845
CHANGELOG: update from #9845
2018-06-13 16:10:32 -07:00
Wenjia Zhang
85cb97a171 CHANGELOG: update from #9845 2018-06-13 16:08:00 -07:00
Gyuho Lee
271f8d6365 Merge pull request #9844 from gyuho/aaa
tests: run coverage tests in Semaphore
2018-06-13 14:36:17 -07:00
Gyuho Lee
0d13176c99 tests/e2e: do not run cipher suite tests in coverage tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 14:32:27 -07:00
Gyuho Lee
8b5cd847d0 tests/semaphore.test.bash: use "sudo" for docker, clean up
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 13:52:56 -07:00
Gyuho Lee
bf34c6a13b tests: run coverage tests in Semaphore
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 13:21:08 -07:00
Gyuho Lee
5277105e1c Merge pull request #9843 from gyuho/semaphore-proxy
tests: run proxy tests in Semaphore
2018-06-13 13:14:04 -07:00
Gyuho Lee
1be4f7526c tests/semaphore.test.bash: match "DATA RACE"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 13:06:33 -07:00
Gyuho Lee
8147e9260f tests: run proxy tests in Semaphore
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 12:57:39 -07:00
Gyuho Lee
f44abd219a Merge pull request #9842 from gyuho/ttt
travis: combine all build tests
2018-06-13 12:42:23 -07:00
Gyuho Lee
4f0c96b424 travis: combine all build tests
We only get 5 concurrent workers in Travis.
Save time by fetching test image only once
for all build tests.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 12:32:50 -07:00
Gyuho Lee
587b264c79 Merge pull request #9841 from gyuho/vvv
vendor: upgrade dependencies except grpc-go
2018-06-13 11:59:20 -07:00
Gyuho Lee
1bca5ae20a bill-of-materials: regenerate
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:49:38 -07:00
Gyuho Lee
b60259dce2 vendor: upgrade "github.com/beorn7/perks"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:18:39 -07:00
Gyuho Lee
f9084d5d69 vendor: upgrade "gopkg.in/cheggaaa/pb.v1"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:17:44 -07:00
Gyuho Lee
7e5770fa40 vendor: upgrade "google.golang.org/genproto"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:17:14 -07:00
Gyuho Lee
f9fa507a7a vendor: upgrade "golang.org/x/time"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:16:49 -07:00
Gyuho Lee
d9bbcc8e27 vendor: update "golang.org/x/text"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:16:15 -07:00
Gyuho Lee
42efd8a6f1 vendor: upgrade "golang.org/x/sys"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:15:44 -07:00
Gyuho Lee
0ded506c6c vendor: upgrade "golang.org/x/net"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:14:57 -07:00
Gyuho Lee
955e1c4467 vendor: upgrade "golang.org/x/crypto"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:14:36 -07:00
Gyuho Lee
8cedb48570 vendor: upgrade "gopkg.in/yaml.v2"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:13:58 -07:00
Gyuho Lee
0c147bd8e0 vendor: upgrade "go.uber.org/atomic"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:12:53 -07:00
Gyuho Lee
d5db59ffb6 vendor: upgrade "spf13/cobra,pflag"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:10:59 -07:00
Gyuho Lee
31c7d0139c vendor: upgrade "sirupsen/logrus"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:10:09 -07:00
Gyuho Lee
853bb8d0e5 vendor: upgrade "github.com/prometheus/procfs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:08:50 -07:00
Gyuho Lee
3e282713b8 vendor: upgrade "github.com/prometheus/common"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:08:08 -07:00
Gyuho Lee
acf9dce89a vendor: upgrade "github.com/prometheus/client_golang"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:06:44 -07:00
Gyuho Lee
0a61466253 vendor: upgrade "github.com/grpc-ecosystem/go-grpc-prometheus"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:04:47 -07:00
Gyuho Lee
35f421780a vendor: upgrade "dgrijalva/jwt-go"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-13 10:04:07 -07:00
Jordan Liggitt
d1579c95a2 clientv3: backoff on reestablishing watches when Unavailable errors are encountered 2018-06-13 02:05:04 -04:00
Gyuho Lee
88acced1cd Documentation/upgrades: highlight "latest" tag change in v3.4
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-12 13:00:24 -07:00
Gyuho Lee
a133e9fc8c etcdserver: remove TODO from "warnOfExpensiveGenericRequest"
Metric is already added.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-12 09:37:00 -07:00
Gyuho Lee
0bf6b87d5e Merge pull request #9835 from jpbetz/fix-txn-warning-cmp-val
etcdserver: Fix txn request 'took too long' warnings to use loggable request stringer
2018-06-11 17:45:12 -07:00
Joe Betz
a6fad51603 etcdserver: Fix txn request 'took too long' warnings to use loggable request stringer 2018-06-11 16:58:48 -07:00
Gyuho Lee
59aec1fa31 Merge pull request #9834 from xiang90/m_m
backend: more metrics for bboltdb transaction
2018-06-11 14:34:07 -07:00
Xiang Li
63c482e430 CHANGELOG: highlight new backend metrics 2018-06-11 14:05:29 -07:00
Xiang Li
2f1730fcae backend: more metrics for bboltdb transcation 2018-06-11 14:05:04 -07:00
Gyuho Lee
322c0df785 Merge pull request #9832 from gyuho/functional
functional/tester: fix trigger snapshot retry
2018-06-11 13:14:34 -07:00
Gyuho Lee
19de2b2177 functional/tester: fix trigger snapshot retry
Fix negative commit entry diff:

> {"level":"info","ts":1528740474.775448,"caller":"tester/case.go:299","msg":"trigger snapshot PROGRESS","retries":53,"committed-entries":-238470,"etcd-snapshot-count":10000,"start-revision":238470,"last-revision":0,"took":77.302668629,"error":"context deadline exceeded"}

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-11 12:49:18 -07:00
Gyuho Lee
f985e5172a CHANGELOG: highlight response size information in slow request
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-11 12:23:10 -07:00
Gyuho Lee
849d3f2ac9 Merge pull request #9826 from jpbetz/response_sizes
etcdserver: Add response byte size and range response count to took too long warning
2018-06-11 11:13:24 -07:00
Joe Betz
b47e148d5d etcdserver: Add response byte size and range response count to took too long warning 2018-06-11 10:02:30 -07:00
Gyuho Lee
bb744f6d2b words: whitelist more for balancer branch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 14:35:39 -07:00
Gyuho Lee
cbcf84464c words: whitelist more from new balancer branch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 14:13:14 -07:00
Gyuho Lee
79086ba425 Merge pull request #9828 from gyuho/aaa
integration: block dial for timeout errors
2018-06-08 14:00:24 -07:00
Gyuho Lee
cbb6dea367 integration: block dial for timeout errors
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 13:49:17 -07:00
Gyuho Lee
61ef343166 Merge pull request #9827 from gyuho/go
*: use Go 1.10.3 for CI tests
2018-06-08 11:36:22 -07:00
Gyuho Lee
9034e1c144 Makefile: use Go 1.9.7
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 10:54:56 -07:00
Gyuho Lee
f4ea05803e semaphore: use latest v3.3 patch release for release test
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 10:53:47 -07:00
Gyuho Lee
082c3ef0bc *: use Go 1.10.3 for CI tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 10:50:12 -07:00
Gyuho Lee
c6e18c712c CHANGELOG: highlight slow request warning log
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-08 09:57:13 -07:00
Gyuho Lee
e22ab78ccb Merge pull request #9822 from jpbetz/value_size_stringer
etcdserver: Replace value contents with value_size in request took too long warning
2018-06-08 09:39:56 -07:00
Joe Betz
225b0bf80a etcdserver: Replace value contents with value_size in request took too long warning 2018-06-07 16:41:48 -07:00
Gyuho Lee
d6ff23e669 Merge pull request #9820 from gyuho/quota-size
*: add "etcd_server_quota_backend_bytes" metric
2018-06-07 12:06:34 -07:00
Gyuho Lee
a9aafc8d6b CHANGELOG: highlight metrics change, clean up
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 12:06:09 -07:00
Gyuho Lee
84fafff329 Merge pull request #9819 from gyuho/mmm
*: promote db size metric to "'etcd" namespace
2018-06-07 11:43:48 -07:00
Gyuho Lee
184372cd1b integration: add "TestMetricQuotaBackendBytes"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:48:16 -07:00
Gyuho Lee
7dd7018835 etcdserver: add "etcd_server_quota_backend_bytes"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:44:51 -07:00
Gyuho Lee
a8d7d5ad72 Documentation/upgrades: highlight db metrics change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:33:02 -07:00
Gyuho Lee
009d05ae4f Documentation/op-guide: highlight db size metrics change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:26:45 -07:00
Gyuho Lee
f2db05a869 mvcc: server db size with "etcd_debugging" namespace for backward compatibility
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:23:12 -07:00
Gyuho Lee
21130d5fb6 mvcc: promote db size metrics to "etcd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:20:45 -07:00
Gyuho Lee
cf196fc4d8 Documentation/op-guide: promote db size metric in grafana.json
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:20:45 -07:00
Gyuho Lee
196625b917 integration: promote db size metrics to "etcd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-07 10:20:41 -07:00
Gyuho Lee
25f4d80980 Merge pull request #9815 from jpbetz/changelog-3.1.17-3.2.22
CHANGELOG: Add dates for 3.1.17 and 3.2.22 releases
2018-06-06 10:54:33 -07:00
Gyuho Lee
004d640ff5 Merge pull request #9814 from jpbetz/script-build-fix
scripts: Fix release script to always build etcd binary before checking version
2018-06-06 10:54:17 -07:00
Joe Betz
0d4063681d CHANGELOG: Add dates for 3.1.17 and 3.2.22 releases 2018-06-06 10:50:27 -07:00
Joe Betz
a8990e2e18 scripts: Fix release script to always build etcd binary before checking version 2018-06-06 10:48:45 -07:00
Gyuho Lee
beae09e807 CHANGELOG: clarify snapshot fix, clean up
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-06 09:47:31 -07:00
Xiang Li
5d461a9e1b Merge pull request #9813 from mgates/move_lease_sorting_outside_lock
leases: Move lease sorting outside of lock
2018-06-06 09:39:46 -07:00
Micah Gates
aa02ceb2e5 leases: Move lease sorting outside of lock
Because the leases were sorted inside UnsafeLeases() the lessor mutex
ended up being locked while the whole map was sorted. This pulls the
soring outside of the lock, per feedback on
https://github.com/coreos/etcd/pull/9699
2018-06-06 15:05:23 +00:00
Gyuho Lee
ab19dee5ce CHANGELOG: highlight June patch release
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 16:08:51 -07:00
Gyuho Lee
52ae578922 Merge pull request #9807 from gyuho/move-leader
ctlv3: support TLS endpoints for move-leader command
2018-06-05 15:46:49 -07:00
Gyuho Lee
54ed4de6d1 Merge pull request #9801 from gyuho/cipher-suites
*: support TLS cipher suite whitelist
2018-06-05 15:46:09 -07:00
Gyuho Lee
65192fddfa ctlv3: support TLS endpoints for move-leader command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 13:48:09 -07:00
Gyuho Lee
6d9cb7ac9a tests/e2e: test move-leader command with TLS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 13:45:14 -07:00
Gyuho Lee
1a47c28504 Documentation/op-guide: document "--cipher-suites"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 13:25:57 -07:00
Gyuho Lee
96e8cff286 CHANGELOG: highlight custom cipher suite feature
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 13:23:55 -07:00
Xiang Li
94f2e450dd Merge pull request #9806 from spzala/master
Check: correct the memory limit
2018-06-05 13:19:46 -07:00
Gyuho Lee
d82f726da8 tests/e2e: test client-side cipher suites with curl
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 12:59:29 -07:00
Gyuho Lee
abffe0d29a etcdmain: add "--cipher-suites" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 12:54:34 -07:00
Gyuho Lee
3125c0c3e8 embed: support custom cipher suites
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 12:50:29 -07:00
Gyuho Lee
917d40cd4c integration: test client-side TLS cipher suites
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 12:34:56 -07:00
Gyuho Lee
3fb9cc84c6 pkg/transport: add "TLSInfo.CipherSuites" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 12:27:05 -07:00
Gyuho Lee
67313ff06f pkg/tlsutil: add "GetCipherSuite"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-05 12:26:48 -07:00
Sahdev P. Zala
eff8166a45 Check: correct the memory limit
We should be doing 3M not 30 as it's said in the doc comment.
2018-06-05 09:46:56 -04:00
Sam Batschelet
438e6750ee Merge pull request #9799 from shubhamranjan/master
Documentation: Add v3 grpc C# client to libraries
2018-06-04 08:07:12 -04:00
Shubham Ranjan
537a1a66e6 Documentation: Add v3 grpc C# client to libraries 2018-06-04 16:16:56 +05:30
Gyuho Lee
83abce0677 Merge pull request #9796 from gyuho/watcher-benchmark
mvcc: separate synced/unsynced benchmarks
2018-06-01 10:06:57 -07:00
Gyuho Lee
e239cc276a mvcc: separate synced/unsynced benchmarks
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-06-01 10:00:18 -07:00
Gyuho Lee
e6de5d8091 Merge pull request #9792 from gyuho/cov
etcdctl/ctlv3: remove ETCDCTL_API warning, fix e2e coverage tests
2018-05-31 15:46:28 -07:00
Gyuho Lee
5858f1ac15 Merge pull request #9793 from ercliou/fix-ebnf
Documentation: Fix etcdctl tx eBNF
2018-05-31 14:43:47 -07:00
Gyuho Lee
cc50a70495 Merge pull request #9790 from wenjiaswe/decoder-support
etcd-dump-logs: add decoder support
2018-05-31 14:30:25 -07:00
Wenjia Zhang
29121a8cee etcd-dump-logs: add decoder support 2018-05-31 14:29:46 -07:00
Gyuho Lee
b153be2acb tests/e2e: fix "testCtlV2Backup"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-31 14:25:24 -07:00
Gyuho Lee
85e3c5ec37 etcdctl/ctlv3: remove ETCDCTL_API warning
To make coverage stats happy 25bc65794f.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-31 14:23:55 -07:00
Gyuho Lee
6d773ffe96 Merge pull request #9794 from jpbetz/release-scripts-june
scripts/release: Fix docker push for 3.1 releases, remove inaccurate warning at the end of release script
2018-05-31 14:02:34 -07:00
Gyuho Lee
9ce31018e8 Merge pull request #9795 from jpbetz/changelog-3.1.16_3.2.21
CHANGELOG: Updates dates for 3.1.16 and 3.2.21 releases
2018-05-31 14:01:44 -07:00
Joe Betz
273d138ca7 CHANGELOG: Updates dates for 3.1.16 and 3.2.21 releases 2018-05-31 13:58:55 -07:00
Joe Betz
e2821a16ff scripts/release: Fix docker push for 3.1 releases, remove inaccurate warning at the end of release script 2018-05-31 13:56:07 -07:00
Eric Liou
8b16c234af Documentation: Fix etcdctl tx eBNF
`create` also expects operand, or this error is printed:
Error:  malformed comparison: create("mykey") "0"; got create("mykey") "0" ""
2018-05-31 16:40:47 -03:00
Gyuho Lee
0db7ea7337 scripts/release: disable minor version docker push
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-31 12:08:01 -07:00
Gyuho Lee
aaa71e5b6f CHANGELOG-3.3: update patch release date
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-31 11:13:53 -07:00
Gyuho Lee
391433b69a Merge pull request #9775 from gyuho/fix-grpc-proxy-watch
mvcc: fix panic by allowing future revision watcher from restore operation
2018-05-31 11:06:45 -07:00
Sam Batschelet
2b3aa7e1d4 Merge pull request #9777 from primeroz/master
Documentation: Add etcd version support notes for Using TLS common name in RBAC and notes about inter-peer CN filtering
2018-05-30 19:51:16 -04:00
Gyuho Lee
d2d8c5716f Merge pull request #9789 from brancz/mixin-dashboard
Documentation: Add Grafana dashboard to etcd monitoring mixin
2018-05-30 09:50:20 -07:00
Gyuho Lee
003e2f313c Merge pull request #9788 from hexfusion/fx_doc
Documentation: add min version for --listen-metric-urls flag.
2018-05-30 09:49:06 -07:00
primeroz
3b53146b49 Documentation: Add support notes for Using TLS common name in RBAC and support for inter-peer CN filtering 2018-05-30 13:29:42 +01:00
Frederic Branczyk
778bfe1c82 Documentation: Add Grafana dashboard to etcd monitoring mixin 2018-05-30 13:42:36 +02:00
Sam Batschelet
96ea63d44e Documentation: add min version for --listen-metric-urls flag. 2018-05-29 23:26:10 -04:00
Gyuho Lee
e2a6489c1e Merge pull request #9787 from gyuho/fix
clientv3/integration: fix "TestMaintenanceSnapshotErrorInflight"
2018-05-29 13:33:22 -07:00
Gyuho Lee
7284e5a0a9 clientv3/integration: fix "TestMaintenanceSnapshotErrorInflight"
Errors from gRPC should be typed *status.statusError

=== RUN   TestMaintenanceSnapshotErrorInflight
WARNING: 2018/05/29 11:43:21 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial unix localhost:55815860381826373260: connect: no such file or directory"; Reconnecting to {localhost:55815860381826373260 0  <nil>}
--- FAIL: TestMaintenanceSnapshotErrorInflight (2.42s)
	maintenance_test.go:192: expected context deadline exceeded, got rpc error: code = DeadlineExceeded desc = context deadline exceeded

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-29 11:49:18 -07:00
Gyuho Lee
1951ebab7e Merge pull request #9706 from metalmatze/etcd3-alerts
Documentation/op-guide: remove etcd_http_.* rules from examples
2018-05-29 11:35:51 -07:00
Matthias Loibl
6e61eb2529 Documentation/op-guide: remove etcd_http_.* rules from examples 2018-05-29 11:35:02 -07:00
Gyuho Lee
3f9cce7797 CHANGELOG-3.4: highlight ETCDCTL_API=3 change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-29 11:32:51 -07:00
Gyuho Lee
356c4f17ca CHANGELOG: add "--password" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-29 11:25:42 -07:00
Gyuho Lee
dbb37f98fd Merge pull request #9730 from mitake/user-w-colon
etcdctl: add --password flag to the subcommand user add
2018-05-29 11:14:46 -07:00
Gyuho Lee
eeb8bcc753 Documentation/upgrades: remove "./bin"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-29 11:06:31 -07:00
Gyuho Lee
b11a6aa381 Documentation/upgrades: highlight ETCDCTL_API change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-29 11:05:24 -07:00
Gyuho Lee
b7d556bde5 CHANGELOG: highlight ETCDCTL_API change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-29 11:01:34 -07:00
Gyuho Lee
fb43f46c0a Merge pull request #9640 from grapeshot/monitoring-mixin
Prometheus Monitoring Mixin for etcd.
2018-05-29 09:54:35 -07:00
Tom Wilkie
13d4e1509b Documentation: add Prometheus monitoring-mixin
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
2018-05-29 09:52:40 -07:00
Gyuho Lee
0c858dc248 Merge pull request #9784 from vimalk78/9600_ETCDCTL_API_3_default
etcdctl/ctlv3: etcd v3.4 makes ETCDCTL_API=3 by default
2018-05-29 09:38:58 -07:00
Vimal K
25bc65794f etcdctl/ctlv3: etcd v3.4 makes ETCDCTL_API=3 by default 2018-05-29 06:27:20 +05:30
Xiang Li
ce918cef63 Merge pull request #9780 from vimalk78/9583_ETCDCTL_ENDPOINT_confused_trim_space
etcdctl/ctlv3 : fixes 9583. trim spaces in ETCDCTL_ENDPOINTS env variable
2018-05-27 09:38:38 -07:00
Xiang Li
357308bfcd Merge pull request #9679 from lorneli/lorneli-raft-dev
raft: describe the purpose of lockedRand
2018-05-26 22:03:18 -07:00
lorneli
a083282482 raft: describe the purpose of lockedRand
Struct lockedRand wraps rand.Rand with mutex lock because it's
accessed by multiple raft groups.
2018-05-26 21:59:24 +08:00
Vimal K
807dfcea78 etcdctl: fixes 9583. trim spaces in ETCDCTL_ENDPOINTS 2018-05-26 04:58:06 +05:30
Gyuho Lee
ba10640d0b Merge pull request #9778 from idiamond-stripe/idiamond-add-leases-metric
leases: Add metrics to etcd leases
2018-05-25 14:04:02 -07:00
Isaac Diamond
0369298b21 leases: Add metrics to etcd leases
This patch adds four metrics to the `leases` package for easier
debugging.
2018-05-25 12:57:28 -07:00
Gyuho Lee
0398ec7dcb mvcc: fix panic by allowing future revision watcher from restore operation
This also happens without gRPC proxy.

Fix panic when gRPC proxy leader watcher is restored:

```
go test -v -tags cluster_proxy -cpu 4 -race -run TestV3WatchRestoreSnapshotUnsync

=== RUN   TestV3WatchRestoreSnapshotUnsync
panic: watcher minimum revision 9223372036854775805 should not exceed current revision 16

goroutine 156 [running]:
github.com/coreos/etcd/mvcc.(*watcherGroup).chooseAll(0xc4202b8720, 0x10, 0xffffffffffffffff, 0x1)
	/home/gyuho/go/src/github.com/coreos/etcd/mvcc/watcher_group.go:242 +0x3b5
github.com/coreos/etcd/mvcc.(*watcherGroup).choose(0xc4202b8720, 0x200, 0x10, 0xffffffffffffffff, 0xc420253378, 0xc420253378)
	/home/gyuho/go/src/github.com/coreos/etcd/mvcc/watcher_group.go:225 +0x289
github.com/coreos/etcd/mvcc.(*watchableStore).syncWatchers(0xc4202b86e0, 0x0)
	/home/gyuho/go/src/github.com/coreos/etcd/mvcc/watchable_store.go:340 +0x237
github.com/coreos/etcd/mvcc.(*watchableStore).syncWatchersLoop(0xc4202b86e0)
	/home/gyuho/go/src/github.com/coreos/etcd/mvcc/watchable_store.go:214 +0x280
created by github.com/coreos/etcd/mvcc.newWatchableStore
	/home/gyuho/go/src/github.com/coreos/etcd/mvcc/watchable_store.go:90 +0x477
exit status 2
FAIL	github.com/coreos/etcd/integration	2.551s
```

gRPC proxy spawns a watcher with a key "proxy-namespace__lostleader"
and watch revision "int64(math.MaxInt64 - 2)" to detect leader loss.
But, when the partitioned node restores, this watcher triggers
panic with "watcher minimum revision ... should not exceed current ...".

This check was added a long time ago, by my PR, when there was no gRPC proxy:

https://github.com/coreos/etcd/pull/4043#discussion_r48457145

> we can remove this checking actually. it is impossible for a unsynced watching to have a future rev. or we should just panic here.

However, now it's possible that a unsynced watcher has a future
revision, when it was moved from a synced watcher group through
restore operation.

This PR adds "restore" flag to indicate that a watcher was moved
from the synced watcher group with restore operation. Otherwise,
the watcher with future revision in an unsynced watcher group
would still panic.

Example logs with future revision watcher from restore operation:

```
{"level":"info","ts":1527196358.9057755,"caller":"mvcc/watcher_group.go:261","msg":"choosing future revision watcher from restore operation","watch-key":"proxy-namespace__lostleader","watch-revision":9223372036854775805,"current-revision":16}
{"level":"info","ts":1527196358.910349,"caller":"mvcc/watcher_group.go:261","msg":"choosing future revision watcher from restore operation","watch-key":"proxy-namespace__lostleader","watch-revision":9223372036854775805,"current-revision":16}
```

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-25 12:40:02 -07:00
Gyuho Lee
86d1d3e8dc integration: enable TestV3WatchRestoreSnapshotUnsync for gRPC proxy
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-25 12:30:42 -07:00
Gyuho Lee
476c9cbeed CHANGELOG: clarify watch fix, add lease metrics changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-25 12:30:05 -07:00
Gyuho Lee
0ad6e5269e CHANGELOG: patch release with watch fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-25 11:45:45 -07:00
Gyuho Lee
1ebaeed5c1 embed: fix typo
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-25 11:15:47 -07:00
Gyuho Lee
f5e52c995c Merge pull request #9773 from gyuho/auth-test
integration: test lease revoke routine with JWT token
2018-05-24 12:16:09 -07:00
Gyuho Lee
a52f16d4a6 integration: test lease revoke routine with JWT token
https://github.com/coreos/etcd/pull/9698 wasn't really testing
the panic code path when leases are expiry.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-24 11:38:31 -07:00
Xiang Li
20cf7f4d5b Merge pull request #9671 from lorneli/raft-test
raft: merge test cases of pre-candidate with the normal one
2018-05-24 08:27:07 -07:00
Gyuho Lee
b4f84f046b Merge pull request #9765 from gyuho/watch-restore
mvcc: watcherGroup chooseAll panic (skip proxy tests for now)
2018-05-23 16:53:50 -07:00
Gyuho Lee
a16576c763 CHANGELOG: update dates, upcoming patch releases
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 16:00:02 -07:00
Gyuho Lee
210c842345 mvcc: improve watcherGroup panic message
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 15:38:40 -07:00
Gyuho Lee
9cac286830 integration: move "TestV3WatchRestoreSnapshotUnsync"
When run with "-tags cluster_proxy", panic.
Need investigate more.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 15:35:59 -07:00
Gyuho Lee
83fd1c3faa Merge pull request #9762 from gyuho/rrr
*: document all histogram metrics, add etcd_snap_fsync_duration_seconds
2018-05-23 14:42:39 -07:00
Gyuho Lee
5f2c195ee7 CHANGELOG-3.4: add "etcd_network_active_peers" and disconnected_peers_total
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:32:19 -07:00
Gyuho Lee
3821f3364d etcdserver/api/rafthttp: add "etcd_network_active_peers/disconnected_peers_total"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:23:45 -07:00
Gyuho Lee
1a102fb3f5 proxy/httpproxy: document histogram
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
b0b966c43c wal: document, clean up fsync histogram
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
1d91698268 mvcc: document, clean up histogram variables
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
e6a113cdcd mvcc/backend: clean up histogram variables
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
afe78fbe69 etcdserver/api/v2http: document histogram
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
973fe43b83 etcdserver/api/snap: document histograms, add "etcd_snap_fsync_duration_seconds"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
640f5e64a9 etcdserver/api/rafthttp: document round-trip metrics, clean up
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
5a9e48be30 etcdserver/api/rafthttp: increase bucket upperbound up-to 3-sec
From 0.8 sec to 3.2 sec for more detailed latency analysis

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:03:28 -07:00
Gyuho Lee
2b01460b4d CHANGELOG-3.4: highlight new metrics, histogram upper bound changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 14:00:48 -07:00
Gyuho Lee
c444c1f327 Merge pull request #9761 from gyuho/mmm
etcdserver,mvcc: add more storage layer metrics
2018-05-23 13:11:29 -07:00
Gyuho Lee
a1aade8c1b etcdserver: rename to "heartbeat_send_failures_total"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:11:08 -07:00
Gyuho Lee
bc59f7b42f mvcc: add "etcd_mvcc_hash_(rev)_duration_seconds"
etcd_mvcc_hash_duration_seconds
etcd_mvcc_hash_rev_duration_seconds

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
966ee9323c mvcc/backend: fix defrag duration scale
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
d326b2933c mvcc/backend: add "etcd_disk_backend_defrag_duration_seconds"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
60a9ec8a15 mvcc/backend: document metrics ExponentialBuckets
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
58e3ead219 mvcc/backend: clean up mutex, logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
dd1baf6e96 etcdserver: add "etcd_server_slow_apply_total"
{"level":"warn","ts":1527101858.6985068,"caller":"etcdserver/util.go:115","msg":"apply request took too long","took":0.114101529,"expected-duration":0.1,"prefix":"","request":"header:<ID:1029181977902852337> put:<key:\"\\000\\000...

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
896a5e4a2b etcdserver: add "etcd_server_heartbeat_failures_total"
{"level":"warn","ts":1527101858.4149103,"caller":"etcdserver/raft.go:370","msg":"failed to send out heartbeat; took too long, server is overloaded likely from slow disk","heartbeat-interval":0.1,"expected-duration":0.2,"exceeded-duration":0.025771662}
{"level":"warn","ts":1527101858.4149644,"caller":"etcdserver/raft.go:370","msg":"failed to send out heartbeat; took too long, server is overloaded likely from slow disk","heartbeat-interval":0.1,"expected-duration":0.2,"exceeded-duration":0.034015766}

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:09:42 -07:00
Gyuho Lee
1c18f8dfb9 CHANGELOG-3.4: highlight new server, mvcc metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 13:04:45 -07:00
Gyuho Lee
bf45d6a76e Merge pull request #9760 from gyuho/stream
etcdserver/api/v3rpc: add "etcd_network_server_stream_failures_total"
2018-05-23 10:36:05 -07:00
Gyuho Lee
539e2f2ff8 CHANGELOG-3.4: highlight "etcd_network_server_stream_failures_total"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 10:35:37 -07:00
Gyuho Lee
a5b32ba941 etcdserver/api/v3rpc: add "etcd_network_server_stream_failures_total"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 08:05:43 -07:00
Gyuho Lee
0e2dd3e4f1 Merge pull request #9757 from hexfusion/gg_latest
vendor: update "grpc-gateway" to v1.4.1
2018-05-23 07:25:41 -07:00
Sam Batschelet
f31a02d4c1 vendor: update "grpc-gateway" to v1.4.1 2018-05-23 08:41:56 -04:00
Sam Batschelet
fe15c3250e scripts/genproto: use latest "grpc-ecosystem/grpc-gateway" 2018-05-23 08:36:58 -04:00
Sam Batschelet
7afa98fc8a CHANGELOG: upgrade "grpc-ecosystem/grpc-gateway" dependencies 2018-05-23 08:36:58 -04:00
Sam Batschelet
20b1a98d20 Merge pull request #9756 from gyuho/grpc-gateway
vendor: update "grpc-gateway" to v1.4.0
2018-05-23 08:07:52 -04:00
Gyuho Lee
c77223f166 vendor: update "grpc-gateway" to v1.4.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-23 01:34:06 -07:00
Gyuho Lee
216e8e4417 Merge pull request #9755 from hexfusion/fx_grpc_gateway
vendor: use latest "grpc-ecosystem/grpc-gateway"
2018-05-22 15:39:29 -07:00
Sam Batschelet
05554119c9 vendor: use latest "grpc-ecosystem/grpc-gateway" 2018-05-22 17:35:15 -04:00
Gyuho Lee
b5ceaf7f89 Merge pull request #9754 from gyuho/vendor
vendor: use latest "{gogo,golang}/protobuf"
2018-05-22 14:08:37 -07:00
Gyuho Lee
f13dd2ddfb vendor: use latest "{gogo,golang}/protobuf"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-22 13:42:52 -07:00
Gyuho Lee
d29a0c7172 scripts/genproto: use latest "gogo/protobuf"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-22 13:42:43 -07:00
Gyuho Lee
792b3fa920 CHANGELOG: upgrade "*/protobuf" dependencies
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-22 13:42:24 -07:00
Sam Batschelet
3de040562d Merge pull request #9698 from hexfusion/fx_auth
auth: fix panic using WithRoot and improve JWT coverage
2018-05-22 15:47:47 -04:00
Gyuho Lee
7c38ecc8d2 Merge pull request #9749 from gyuho/rename
*: move internal server packages under "etcdserver"
2018-05-22 12:22:30 -07:00
Sam Batschelet
b30a1166e0 auth: fix panic using WithRoot and improve JWT coverage 2018-05-22 12:53:27 -04: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
2dd555c983 *: move "etcdserver/api/v3compactor"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 10:31:16 -07:00
Gyuho Lee
871c218894 *: move "etcdserver/api/v3alarm"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 10:31:16 -07:00
Gyuho Lee
9149565cb3 *: move to "etcdserver/api/membership"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 10:31:16 -07:00
Gyuho Lee
017232a710 CHANGELOG-3.4: highlight internal package rename
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 10:31:16 -07:00
Gyuho Lee
671f1c41a8 etcdserver/api/v2discovery: move internal "discovery" package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 09:50:38 -07:00
Gyuho Lee
346589edd1 Merge pull request #9748 from gyuho/rename
*: clean up logging, move internal "snap" package to "etcdserver"
2018-05-21 09:40:13 -07:00
Gyuho Lee
37925583b8 words: add whitelists
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:46:25 -07:00
Gyuho Lee
7dabd6c255 *: rename internal packages in tools/testing
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -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
4d80753804 etcdctl: rename internal snapshot packages
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
2d542d336a scripts/genproto.sh: rename
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
d41bcb7ff6 CHANGELOG-3.4: rename "clientv3/snapshot"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
143fbf4caa clientv3/snapshot: rename snapshot package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
1e4f56114e etcdserver: use new "snap" import paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
a0b4ecbd4c rafthttp: use new "snap" import paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
adb72e56f1 CHANGELOG-3.4: highlight "etcdserver/api/snap"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
2bd689acea etcdserver/api/snap: rename internal package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
d05f675def raftsnap: clean up logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 07:45:34 -07:00
Gyuho Lee
e385563009 README: fix typo
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-21 01:48:10 -07:00
Hitoshi Mitake
8fcab98bf2 etcdctl: add flags for specifying password
This commit adds two flags to etcdctl:
1. `--password` flag to etcdctl as a global option. It can be used for
specifying password for authentication required for the command
execution.
2. `--new-user-password` flag to `etcdctl user add`. It can be used
for specifying password of newly created user by the command.

The main motivation of the flags is allowing user to have : in its
name.

Fix https://github.com/coreos/etcd/issues/9691
2018-05-21 16:18:01 +09:00
Gyuho Lee
9a88815c18 CHANGELOG: use gRPC v1.12 for v3.4
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 16:53:44 -07:00
Gyuho Lee
3095b8e530 CHANGELOG: add details on unsynced watch fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 16:51:14 -07:00
Gyuho Lee
955fd99bc9 Merge pull request #9746 from gyuho/raft-logger
etcdserver: set default Raft logger with zap.Logger
2018-05-18 16:32:48 -07:00
Gyuho Lee
1a399bd068 Merge pull request #9745 from gyuho/watch
*: test watch restore in network-partitioned node, clean up fields, logging
2018-05-18 16:32:29 -07:00
Gyuho Lee
58ae15bd29 etcdserver: set default Raft logger with zap.Logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 15:38:39 -07:00
Gyuho Lee
31094e5616 tests/e2e: rename to "snapshotCount"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 15:27:48 -07:00
Gyuho Lee
2847232096 integration: test watch restore on slow follower
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 15:19:37 -07:00
Gyuho Lee
aa99ed54b7 integration: rename "SnapshotCount"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:41:30 -07:00
Gyuho Lee
5235fc2106 functional/rpcpb: rename "SnapshotCount"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:41:01 -07:00
Gyuho Lee
4ce10157ff tests/e2e: rename "SnapshotCount"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:40:02 -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
892f7e02e0 etcdmain: rename "SnapshotCount"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:39:31 -07:00
Gyuho Lee
afe511945e embed: rename "SnapshotCount", add "SnapshotCatchUpEntries"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:38:39 -07:00
Gyuho Lee
49d672ff9b etcdserver: rename "SnapshotCount", add "SnapshotCatchUpEntries"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:37:50 -07:00
Gyuho Lee
374f4cef4d *: document "SnapshotCount" field change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 14:28:26 -07:00
Gyuho Lee
1c904b1ad6 CHANGELOG-3.4: fix grammar, clarify WAL directory change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 12:43:03 -07:00
Gyuho Lee
fc7b9b07bf Merge pull request #9744 from gyuho/cluster_proxy
clientv3/integration: do not run fragmentation tests with gRPC Proxy
2018-05-18 12:30:10 -07:00
Gyuho Lee
41133eb3c6 Merge pull request #9743 from gyuho/wal
wal: allow non-WAL files in wal directory
2018-05-18 12:29:47 -07:00
Gyuho Lee
19eb8a5132 clientv3/integration: do not run fragmentation tests with gRPC Proxy
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 10:45:03 -07:00
Gyuho Lee
12a227509d CHANGELOG-3.4: add "non-WAL files in ETCD_WAL_DIR"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 10:34:14 -07:00
Gyuho Lee
567b47fc3e wal: filter file names in WAL directory by ".wal"
WAL never writes nor needs files without ".wal" suffix.
Thus, safe to filter out only ".wal" files.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 10:29:48 -07:00
Gyuho Lee
fa6d2e2d71 pkg/fileutil: add "ReadDirOption"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-18 10:28:27 -07:00
Gyuho Lee
ad4e8e9490 Merge pull request #9738 from gyuho/systemd
vendor: upgrade "github.com/coreos/go-systemd" to v17
2018-05-17 15:43:39 -07:00
Gyuho Lee
fc87b28d21 CHANGELOG-3.4: fix typo in "ugorji/go" link
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 14:36:28 -07:00
Gyuho Lee
89697202b8 CHANGELOG: hilight "coreos/go-systemd" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 14:34:29 -07:00
Gyuho Lee
e0fc9386bc vendor: upgrade "github.com/coreos/go-systemd" to v17
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 14:33:52 -07:00
Gyuho Lee
c2cacb3a50 Merge pull request #9737 from gyuho/test-rafthttp
*: move test rafthttp Transporter to etcdserver
2018-05-17 14:29:26 -07:00
Gyuho Lee
c772599c0f Merge pull request #9736 from gyuho/snap
raftsnap: use zap logger
2018-05-17 14:26:11 -07:00
Gyuho Lee
5bc28488b2 rafthttp: remove unused test Transporter
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 14:17:08 -07:00
Gyuho Lee
366db18662 etcdserver: define test transporter
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 14:16:52 -07:00
Gyuho Lee
f523b0b33f tools/etcd-dump-logs: pass zap logger to raftsnap
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 13:59:29 -07:00
Gyuho Lee
b4565cc97b raftsnap: use zap logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 13:59:20 -07:00
Gyuho Lee
63b6f432dc Merge pull request #9735 from gyuho/upgrade-guide
Documentation/upgrades: improve server checklists with zap logger
2018-05-17 13:15:35 -07:00
Gyuho Lee
22c0f518f7 Documentation/upgrades: improve server checklists with zap logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 13:10:52 -07:00
Gyuho Lee
7f497b81c8 Merge pull request #9733 from gyuho/wal
wal: add missing logs, improve pipeline test coverage
2018-05-17 11:50:41 -07:00
Gyuho Lee
e15ce28168 wal: add missing logs, improve pipeline test coverage
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 11:01:31 -07:00
Gyuho Lee
610dd0911d Merge pull request #9732 from gyuho/procfile
*: use "--logger=zap" for Procfile
2018-05-17 09:30:26 -07:00
Gyuho Lee
6de62861b7 *: use "--logger=zap" for Procfile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 02:22:34 -07:00
Gyuho Lee
bd00d725f5 CHANGELOG: clean up logging changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 02:22:34 -07:00
Gyuho Lee
d09c614177 Documentation/upgrades: clean up "--log*" flag changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-17 02:22:31 -07:00
Gyuho Lee
1b9791c6bd etcd.conf.yml: use "stderr" for log-outputs
Fix "TestEtcdExampleConfig".

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 19:41:40 -07:00
Gyuho Lee
0bbc6c203d CHANGELOG: update zap logger changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 17:11:37 -07:00
Gyuho Lee
b9c2d5bc50 Merge pull request #9729 from gyuho/log
*: fix capnslog journal writer with zap logger
2018-05-16 15:18:44 -07:00
Gyuho Lee
265a37f006 integration: remove unnecessary blank line
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 15:04:52 -07:00
Gyuho Lee
258d7201eb CHANGELOG: discontinue "--log-outputs=default" support for zap logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 15:03:18 -07:00
Gyuho Lee
15fcd6d599 embed: do not support "--log-outputs=default" for zap logger
systemd/journal should be configured manually.
Interpreting PPID 1 as systemd unit is wrong,
especially when embedded etcd runs under Docker
container. For such case, every single log write
will error and fall back to stderr, which is
inefficient.

Instead, add "systemd/journal" log output option
and returns error if systemd/journal socket cannot
be found.

"--logger=zap --log-outputs=default" will only error
for v3.4, since zap logger is still experimental.

v3.5 deprecates capnslog and changes "--log-outputs"
default value to "--log-outputs=stderr".

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 14:47:43 -07:00
Gyuho Lee
3a80499da4 *: rename to "journal"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 14:38:27 -07:00
Gyuho Lee
5a61dc8008 embed: error when it cannot find journal socket
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 14:35:11 -07:00
Gyuho Lee
1e953bd187 pkg/logutil: error when it can't find journal socket
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 14:34:49 -07:00
Gyuho Lee
65b29b0bd2 Merge pull request #9728 from gyuho/journald
pkg/logutil: do not print error message on journaldWriter
2018-05-16 12:33:26 -07:00
Gyuho Lee
a338816cb4 pkg/logutil: do not print error message on journaldWriter
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-16 11:34:33 -07:00
Gyuho Lee
4a4be9275c Merge pull request #9681 from gyuho/config-log
doc: deprecate '/config/local/log' in v3.5
2018-05-15 11:07:07 -07:00
Gyuho Lee
53373fecdd Merge pull request #9291 from gyuho/fragment-watch
*: fragment watch response by server request limit
2018-05-14 15:09:11 -07:00
Gyuho Lee
4cbfcfeede test: fix test "etcdserver/api/v2store"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 14:33:49 -07:00
Gyuho Lee
2a5107242c CHANGELOG-3.4: add watch fragmentation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 13:51:30 -07:00
Gyuho Lee
56ec416eba clientv3/integration: test watch response fragmentation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 13:34:54 -07:00
Gyuho Lee
d2c8408216 clientv3: support watch events fragmentation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 13:34:50 -07:00
Gyuho Lee
63dc4429f0 clientv3: add "WithFragment" OpOption
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 13:02:27 -07:00
Gyuho Lee
1eed8493c8 clientv3: add godoc on op.go
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:53:54 -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
Gyuho Lee
294b5745d6 etcdserver/api/v3rpc: support watch fragmentation with max request bytes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:35:50 -07:00
Gyuho Lee
7088d2bf52 etcdserver/api/v3rpc: clean up, read lock on "prevKV"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:35:50 -07:00
Gyuho Lee
e1df2156c7 etcdserver/api/v3rpc: clean up godoc
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:35:50 -07:00
Gyuho Lee
bd43d174ae *: regenerate proto
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:35:50 -07:00
Gyuho Lee
5be21c74e4 etcdserver/etcdserverpb: add "fragment" field to "WatchRequest/Response"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-14 12:35:50 -07:00
Gyuho Lee
0a8dd44dc8 Merge pull request #9724 from ericchiang/security-disclosure
README.md: add security disclosure link
2018-05-14 11:19:39 -07:00
Eric Chiang
0f170ef4b3 README.md: add security disclosure link 2018-05-14 10:34:22 -07:00
Gyuho Lee
67b1ff6724 Merge pull request #9712 from gyuho/unparam
*: test with "unparam", fix "v2v3" store stored get
2018-05-09 17:21:18 -07:00
Gyuho Lee
e7adfb0ebf raft: use different parameters for tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
df87dba218 tests/e2e: use different parameters
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
c862712c73 pkg/transport: remove unused parameter from "wrapTLS"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
1a83c6ad80 mvcc: remove unused parameters
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
b7443ad849 integration: remove unused parameters
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
42a1d4c3b6 functional: remove unused parameters
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
ba7cc04bac etcdserver/api/v2v3: fix "getDir" with "sorted"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:45 -07:00
Gyuho Lee
26e46702a2 etcdserver/v2store: remove unused testing.T parameter
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:42:42 -07:00
Gyuho Lee
7c5cf7013f etcdserver/v2auth: remove unused parameters
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
8235982f6e etcdserver/api/v2http: remove unused parameters
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
d7c4c226fe functional/tester: remove shadowed error variable
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
f091641e46 etcdmain: remove shadowed error variable
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
167c711467 etcdctl/ctlv3: fix fmt test warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
775e9d5ba6 test: add "unused_pass"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
054cdcd127 tests/Dockerfile: add "mvdan.cc/unparam"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 15:39:44 -07:00
Gyuho Lee
e0b74d4656 Merge pull request #9707 from spzala/master
etcdctl/check: create progress bar for datascale
2018-05-09 15:37:43 -07:00
Gyuho Lee
fc9ca59ced Merge pull request #9710 from gyuho/mvcc-delete
mvcc: use latest revision to tombstone
2018-05-09 11:07:21 -07:00
Gyuho Lee
a519464f3e Merge pull request #9711 from jpbetz/release-script-fixes-2
scripts: Fix remote tag check, gcloud login and umask in release script
2018-05-09 10:46:46 -07:00
Joe Betz
4319a8a2ba scripts: Fix remote tag check, gcloud login and umask in release script 2018-05-09 10:37:24 -07:00
Gyuho Lee
4e24a0f34b CHANGELOG-3.3: update date
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 09:25:01 -07:00
Gyuho Lee
5165344981 mvcc: use latest revision to tombstone
We replace/insert into in-memory B-tree, which means
we only keep a single node per key thus do not support
delete by revision on B-tree. So, (*keyIndex).tombstone
has always been marked with latest revision.

tombstone with key's modified revision panics:

panic: store.keyindex: put with unexpected smaller revision [{2 0} / {2 0}]

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-09 09:07:39 -07:00
Gyuho Lee
ef23564ebf Merge pull request #9708 from gyuho/functional-test
functional: configure KV stresser weights
2018-05-08 16:50:09 -07:00
Gyuho Lee
cb030e96fa functional.yaml: configure stresser weights
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-08 16:19:12 -07:00
Gyuho Lee
b1832d2f3c functional/tester: configurable stresser weights
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-08 16:18:45 -07:00
Gyuho Lee
5f762a3193 functional/rpcpb: add stresser weights
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-08 16:18:19 -07:00
Sahdev P. Zala
8ba41d5191 etcdctl/check: create progress bar for datascale
Create a progress bar. The bar will show progress for a given workload.

Fixes #9328
2018-05-08 18:32:54 -04:00
Gyuho Lee
b91ed542a6 Documentation/upgrades: clarify logger flag changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-07 11:43:43 -07:00
Gyuho Lee
d6a2c4d9d9 doc: preview v3.5 changes in v3.4
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 21:30:23 -07:00
Gyuho Lee
7301a4e2f8 CHANGELOG-3.5: deprecate '/config/local/log'
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 21:30:23 -07:00
Gyuho Lee
bbe1106bf1 Documentation: deprecate '/config/local/log' in v3.5
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 21:30:23 -07:00
Gyuho Lee
807770740a etcdserver/api: add TODO to deprecate '/config/local/log'
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 21:30:23 -07:00
Gyuho Lee
f42d9a8451 Merge pull request #9702 from gyuho/fix-tests
tests/e2e: fix v2 proxy tests
2018-05-04 21:03:17 -07:00
Gyuho Lee
12e2d4a15c etcdmain: fix log output
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 20:07:45 -07:00
Gyuho Lee
03bf62f569 tests/e2e: update v2 proxy ready message
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 20:04:01 -07:00
Gyuho Lee
f556b78e8c etcdmain: update v2 proxy ready message
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 20:03:56 -07:00
Gyuho Lee
72cc355c13 Merge pull request #9697 from gyuho/log-log-log
*: add more structured logger
2018-05-04 14:03:50 -07:00
Gyuho Lee
03ef9745a9 mvcc: add more structured logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 13:15:51 -07:00
Gyuho Lee
a32db53765 etcdserver: add details to structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 12:31:35 -07:00
Gyuho Lee
a5b682e40a raftsnap: clean up import paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 12:31:35 -07:00
Gyuho Lee
e11f3d852f rafthttp: add more details to structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 12:31:35 -07:00
Gyuho Lee
2712d31241 Merge pull request #9687 from jxuan/config-bcryptcost
*: make bcrypt-cost configurable
2018-05-04 12:26:01 -07:00
Gyuho Lee
a890007b97 CHANGELOG-3.4: remove blank line
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 12:17:30 -07:00
Gyuho Lee
12ce877c6d CHANGELOG: update
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-04 12:14:41 -07:00
Sam Batschelet
056b03ee1a Merge pull request #9692 from hexfusion/grpc_auth
contrib: add gRPC gateway script for user/add with full chain TLS.
2018-05-04 13:35:37 -04:00
Sam Batschelet
4c928813fb contrib: add gRPC gateway script for user/add with full chain TLS. 2018-05-04 10:03:26 -04:00
Gyuho Lee
14a2d0d54d Merge pull request #9688 from gyuho/fix-watch
etcdctl/ctlv3: fix watch with exec commands, interactive mode flag parsing
2018-05-03 18:46:23 -07:00
Gyuho Lee
38fcfb63b4 Makefile: add ".coverprofile" to "make clean"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 17:22:34 -07:00
Gyuho Lee
11028331e6 gitignore: add "*.coverprofile"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 17:22:34 -07:00
Gyuho Lee
acf671a94c tests/e2e: separate coverage tests for exec commands
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 17:22:34 -07:00
Gyuho Lee
44cda79105 etcdctl/ctlv3: fix watch with exec commands
Following command was failing because the parser incorrectly
picks up the second "watch" string in exec command, thus
passing wrong exec commands.

```
ETCDCTL_API=3 ./bin/etcdctl watch aaa -- echo watch event received

panic: runtime error: slice bounds out of range

goroutine 1 [running]:
github.com/coreos/etcd/etcdctl/ctlv3/command.parseWatchArgs(0xc42002e080, 0x8, 0x8, 0xc420206a20, 0x5, 0x6, 0x0, 0x0, 0x0, 0x0, ...)
	/home/gyuho/go/src/github.com/coreos/etcd/etcdctl/ctlv3/command/watch_command.go:303 +0xbed
github.com/coreos/etcd/etcdctl/ctlv3/command.watchCommandFunc(0xc4202a7180, 0xc420206a20, 0x5, 0x6)
	/home/gyuho/go/src/github.com/coreos/etcd/etcdctl/ctlv3/command/watch_command.go:73 +0x11d
github.com/coreos/etcd/vendor/github.com/spf13/cobra.(*Command).execute(0xc4202a7180, 0xc420206960, 0x6, 0x6, 0xc4202a7180, 0xc420206960)
	/home/gyuho/go/src/github.com/coreos/etcd/vendor/github.com/spf13/cobra/command.go:766 +0x2c1
github.com/coreos/etcd/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x1363de0, 0xc420128638, 0xc420185e01, 0xc420185ee8)
	/home/gyuho/go/src/github.com/coreos/etcd/vendor/github.com/spf13/cobra/command.go:852 +0x30a
github.com/coreos/etcd/vendor/github.com/spf13/cobra.(*Command).Execute(0x1363de0, 0x0, 0x0)
	/home/gyuho/go/src/github.com/coreos/etcd/vendor/github.com/spf13/cobra/command.go:800 +0x2b
github.com/coreos/etcd/etcdctl/ctlv3.Start()
	/home/gyuho/go/src/github.com/coreos/etcd/etcdctl/ctlv3/ctl_nocov.go:25 +0x8e
main.main()
	/home/gyuho/go/src/github.com/coreos/etcd/etcdctl/main.go:40 +0x17b
```

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 17:22:34 -07:00
Gyuho Lee
2ad0acdea8 CHANGELOG: add watch exec command fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 15:20:05 -07:00
Gyuho Lee
cac6ed664c Merge pull request #9690 from gyuho/wal-error
wal,fileutil: add more logs, clarify error messages
2018-05-03 14:57:44 -07:00
Gyuho Lee
f3d9a85697 wal: add warnings on fsync, flock fail paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 14:01:06 -07:00
Gyuho Lee
2bb1a268b3 pkg/fileutil: clarify flock errors
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-03 14:00:42 -07:00
Jiang Xuan
bf432648ae *: make bcrypt-cost configurable 2018-05-03 11:43:32 -07:00
Gyuho Lee
62dfb89a89 Merge pull request #9683 from gyuho/sss
*: clarify missing snapshot file error message/warning
2018-05-02 14:45:32 -07:00
Gyuho Lee
47ab4e22d2 etcdserver: clarify errors from "openSnapshotBackend"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 14:17:22 -07:00
Gyuho Lee
e2af59e4d1 raftsnap: clarify "ErrNoDBSnapshot"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 14:17:00 -07:00
Gyuho Lee
cc44c08d94 Merge pull request #9682 from gyuho/zzz
*: support structured logging in v2 auth/http
2018-05-02 13:29:15 -07:00
Gyuho Lee
617e0aaafb CHANGELOG-3.4: move "Tooling" above
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 13:28:22 -07:00
Gyuho Lee
5828efda38 *: use "zap.Field"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 13:26:39 -07:00
Gyuho Lee
44385bc7b9 vendor: upgrade "go.uber.org/zap" to v1.8.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 13:25:31 -07:00
Gyuho Lee
3ed6c967ce pkg/proxy: silence http server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:59:29 -07:00
Gyuho Lee
7da365bd45 etcdmain: silence http server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:59:17 -07:00
Gyuho Lee
e7e31e9529 functional: silence http server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:59:08 -07:00
Gyuho Lee
1d18f45caf integration: silence http server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:58:56 -07:00
Gyuho Lee
58b7ab97eb integration: use structured logging in peer handler
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:53:56 -07:00
Gyuho Lee
154d7ca4f2 embed: use structured logging in peer handler
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:53:46 -07:00
Gyuho Lee
c60054abea etcdserver/api/etcdhttp: use structured logging in peer handler
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 12:53:28 -07:00
Gyuho Lee
4d863dac5a mvcc: support structured logging in compact restore
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 11:57:23 -07:00
Gyuho Lee
d2e1484762 integration: support structured logging in "v2http"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 11:57:23 -07:00
Gyuho Lee
26b0c84d29 embed: support structured logging in "v2http"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 11:57:23 -07:00
Gyuho Lee
cccf77db9e etcdserver/api/v2http: support structured logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 11:57:23 -07:00
Gyuho Lee
3b38cb305f etcdserver/api/etcdhttp: support structured logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 11:57:23 -07:00
Gyuho Lee
98fcd67e9f etcdserver/v2auth: support structured logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-02 11:57:20 -07:00
Gyuho Lee
859172e84f Merge pull request #9638 from hexfusion/df
Documentation: binding listeners must be IP.
2018-05-02 09:56:43 -07:00
Gyuho Lee
53f51b2f0c Merge pull request #9676 from gyuho/logger
*: highlight "--log-package-levels" deprecation in v3.5
2018-05-02 09:39:18 -07:00
Sam Batschelet
2afd827788 Documentation: binding listeners must be IP. 2018-05-02 06:56:44 -04:00
Gyuho Lee
c94cd5eee8 Merge pull request #9678 from gyuho/integration-logger
integration: use "zap" in tests
2018-05-01 16:44:58 -07:00
Gyuho Lee
6cf3dae93e etcdserver/api/v3rpc: fix race in stream error logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 16:19:55 -07:00
Gyuho Lee
38326d002e etcdserver/v2store: use "zap" logger in v2v3 tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 16:15:09 -07:00
Gyuho Lee
f6a14fb72c clientv3: use "zap" logger in integration tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 16:15:09 -07:00
Gyuho Lee
21d75570ee integration: use "zap" logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 16:15:09 -07:00
Gyuho Lee
9a2796ff9b CHANGELOG-3.4: highlight "CLUSTER_DEBUG" in "integration"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 16:14:58 -07:00
Gyuho Lee
f85c3bfb3e Merge pull request #9677 from gyuho/lll
etcdserver: clarify server membership change logging
2018-05-01 15:31:32 -07:00
Gyuho Lee
b3bd5887cd etcdserver: clarify server membership change logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 15:06:29 -07:00
Gyuho Lee
24e2af4289 Merge pull request #9674 from gyuho/test-script
*: use Go 1.10.2 and Go 1.9.6
2018-05-01 11:50:39 -07:00
Gyuho Lee
d80ef1fb51 etcd.conf.yml.sample: remove "--log-package-levels"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 11:48:39 -07:00
Gyuho Lee
9e7a3e5e91 Documentation/upgrades: highlight "--log-package-levels"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 11:48:19 -07:00
Gyuho Lee
21fdde59ad CHANGELOG-3.5: deprecate "--log-package-levels" in v3.5
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 11:48:02 -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
Xiang Li
a6430644ad Merge pull request #9669 from yaojingguo/fix-typo
contrib/raftexample: fix typo
2018-05-01 10:18:42 -07:00
Gyuho Lee
1c44634f6e CHANGELOG-3.4: use Go 1.10.2
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 10:11:09 -07:00
Gyuho Lee
4a01c4e98a Makefile: use Go 1.10.2
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 10:11:05 -07:00
Gyuho Lee
932ef6c4a3 tests: use Go 1.10.2 in Semaphore test
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 10:08:43 -07:00
Gyuho Lee
79e9178181 travis: use Go 1.10.2
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 10:08:27 -07:00
Gyuho Lee
18e1686bdf test: only print test targets in verbose mode
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-05-01 10:07:25 -07:00
Gyuho Lee
200401248a Merge pull request #9665 from gyuho/unconvert
test: integrate github.com/mdempsky/unconvert
2018-05-01 09:52:44 -07:00
Gyuho Lee
08d28d6e5a Merge pull request #9667 from gyuho/strings
*: remove "strings.Compare == 0"
2018-05-01 09:52:30 -07:00
Joe LeGasse
0659ed6118 Merge pull request #9672 from joelegasse/listen-metrics-doc
docs: Update documentation around --listen-metrics-urls
2018-05-01 12:51:27 -04:00
Joe LeGasse
7ea9059453 docs: Update documentation around --listen-metrics-urls
The `--listen-metrics-urls` also responds to the `/health` endpoint, but
that was not made clear in the documentation. These updates should help
explain how else that flag can be used.
2018-05-01 11:02:22 -04:00
lorneli
3d12e36c7e raft: merge test cases of pre-candidate with the normal one
So result checking just compares the expected with output and
becomes more readable.
2018-05-01 17:08:37 +08:00
Hitoshi Mitake
ad060a84ad Merge pull request #9661 from gyuho/dont-log-password
etcdserver: not print password in the warning message of expensive request
2018-05-01 09:21:50 +02:00
Jingguo Yao
0303480b1a contrib/raftexample: fix typo 2018-05-01 11:22:36 +08:00
Gyuho Lee
b44e43278a etcdctl/ctlv3: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
1917e5c543 pkg/*: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
1af2228fca test: add "unconvert" test
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
78d0c8426e functional: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
53ade5e872 rafthttp: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
eae30a6c9b etcdserver: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
8a28e73862 wal: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
561fab1650 lease: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
3df30b9c7f mvcc: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
ae71076579 auth: fix "unconvert" warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
42147ae0a0 tests/Dockerfile: add "github.com/mdempsky/unconvert"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:32:16 -07:00
Gyuho Lee
fd7e7a01ad tools/etcd-dump-logs: fix minor typo
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:30:20 -07:00
Gyuho Lee
48f28b9d27 lease/leasehttp: remove "strings.Compare != 0"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:11:26 -07:00
Gyuho Lee
86cee93d6b etcdctl/ctlv3: remove "strings.Compare == 0"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:11:11 -07:00
Gyuho Lee
e9d5789dd4 auth: remove "strings.Compare == 0"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 15:10:56 -07:00
Hitoshi Mitake
a9225c164a etcdserver: not print password in the warning message of expensive request
Fix https://github.com/coreos/etcd/issues/9635
2018-04-30 13:44:27 -07:00
Gyuho Lee
b8e8d75677 Merge pull request #9663 from gyuho/test
test: fix "markdown_you_pass"
2018-04-30 12:46:52 -07:00
Gyuho Lee
358640de46 test: fix "markdown_you_pass"
"find" command was matching "vendor" directory in
my local machine.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 11:42:35 -07:00
Gyuho Lee
fcf4241fd3 Merge pull request #9662 from fanminshi/use_svg_logo
readme: use svg format for logo
2018-04-30 11:38:11 -07:00
fanmin shi
86ce5bc1ee readme: use logo svg format 2018-04-30 11:27:15 -07:00
Gyuho Lee
9718dd81d9 Merge pull request #9660 from gyuho/SA4004
auth: fix SA4004 - unconditionally terminated for-loop
2018-04-30 11:19:33 -07:00
Gyuho Lee
d398d41ff0 auth: break TLS VerifiedChains for-loop early
Fix "auth/store.go:1147:4: the surrounding loop is unconditionally terminated (SA4004)"

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 10:34:59 -07:00
Gyuho Lee
cdadc4638d test: enable static analysis "SA4004"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-30 10:04:44 -07: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
4bab1e1be2 Merge pull request #9654 from gyuho/auth
auth: support structured logging
2018-04-27 14:47:02 -07:00
Gyuho Lee
5fd9270d6c test: disable SA4004 temporarily
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 14:21:17 -07:00
Gyuho Lee
30dd8a7dde etcdserver: support structured logging for auth
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 14:19:51 -07:00
Gyuho Lee
da4a982b1c auth: support structured logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 14:19:48 -07:00
Gyuho Lee
e83cc218fc Merge pull request #9651 from gyuho/netutil
pkg/netutil: use structured logging for TCP resolve
2018-04-27 12:38:23 -07:00
Gyuho Lee
b30a14d100 Merge pull request #9652 from gyuho/systemd
vendor: upgrade go-systemd to v16, clean unused vendor
2018-04-27 12:38:09 -07:00
Gyuho Lee
9c4ab836de CHANGELOG-3.4: add "go-systemd" upgrade
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 11:49:51 -07:00
Gyuho Lee
a3de1ea731 vendor: remove unused, upgrade "go-systemd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 11:46:44 -07:00
Gyuho Lee
4baaf322fa pkg/netutil: create doc.go
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 11:41:50 -07:00
Gyuho Lee
0e565c8960 etcdserver: use structured logging in "advertiseMatchesCluster"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 11:40:30 -07:00
Gyuho Lee
e8ba8feaed pkg/netutil: use structured logging for TCP resolve
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-27 11:40:13 -07:00
Gyuho Lee
61ae9cbd85 Merge pull request #9645 from jaricftw/fix-comments
raft: fix a few comments
2018-04-27 11:25:46 -07:00
Jia Zhan
d14b705355 raft: fix a few comments 2018-04-27 11:25:06 -07:00
Gyuho Lee
7582a28cc6 Merge pull request #9628 from wenjiaswe/new1
etcd-dump-logs: add entry-type flag to list entries of specific types…
2018-04-27 10:40:35 -07:00
Gyuho Lee
4a09318243 Merge pull request #9650 from wenjiaswe/new1ChangeLog
CHANGELOG: update from #9628
2018-04-27 10:39:13 -07:00
Wenjia Zhang
001560829e CHANGELOG: update from #9628 2018-04-27 10:30:04 -07:00
Xiang Li
5fca0ec7bd Merge pull request #9649 from cosgroveb/cleanup_lease_queue_todo
lease: Clean-up old TODO around lease map and priority queue
2018-04-27 09:24:59 -07:00
Brian Cosgrove
13ed9f3197 lease: Clean-up old TODO around lease map and priority queue
This TODO was addressed in #9418.
2018-04-27 10:08:15 -05:00
Wenjia Zhang
553325721a etcd-dump-logs: add entry-type flag to list entries of specific types and add test 2018-04-26 18:59:51 -07:00
Gyuho Lee
02e2e3def7 tests/docker-dns-srv: revert Dockerfile change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 15:13:09 -07:00
Gyuho Lee
c460a09225 tests: use zap logger in DNS tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 15:12:13 -07:00
Gyuho Lee
8baa2401b1 Merge pull request #9644 from gyuho/log
*: add more structured logging supports
2018-04-26 15:02:55 -07:00
Gyuho Lee
829c4479f3 etcdmain: support structured logging for discovery service
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 14:36:22 -07:00
Gyuho Lee
c316e6773b embed: clean up structured logging calls
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 14:36:22 -07:00
Gyuho Lee
f7f6fdeb52 etcdserver: support structured logger for discovery, compactor
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 14:36:22 -07:00
Gyuho Lee
6a016cbd86 discovery: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 14:36:18 -07:00
Gyuho Lee
f269c42aad compactor: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 14:21:15 -07:00
Gyuho Lee
73efa9fded CHANGELOG-3.5: highlight "--log-outputs" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 12:28:54 -07:00
Gyuho Lee
a0f1ed3d6b Merge pull request #9643 from gyuho/doc
*: improve documentation around logger change
2018-04-26 11:54:40 -07:00
Gyuho Lee
2271db7552 pkg/logutil: add godoc on zap encoder field names
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 11:54:00 -07:00
Gyuho Lee
6d0f71e4c2 embed: improve "--log-outputs" error message, add godoc
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 11:54:00 -07:00
Gyuho Lee
b0e4fc3974 CHANGELOG: update with latest logger change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 11:54:00 -07:00
Gyuho Lee
fd227254ef Documentation/upgrades: update guides with latest logger change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-26 11:54:00 -07:00
Gyuho Lee
dca3f5e3ad Merge pull request #9626 from yudai/fix_set_inexist_dir
etcdserver: Fix v2v3api set to create parent directly if not exists
2018-04-26 11:50:27 -07:00
Gyuho Lee
624f421d21 Merge pull request #9642 from lorneli/idutil-dev
pkg/idutil: use count field as atomic variable
2018-04-26 11:48:23 -07:00
lorneli
54827d47ee pkg/idutil: use count field as atomic variable
Use atomic.AddUint64 instead of mutex lock to inc count field.

Bench result:
benchmark           old ns/op     new ns/op     delta
BenchmarkNext-4     163           26.3          -83.87%
2018-04-27 00:44:45 +08:00
Iwasaki Yudai
3c25465855 etcdserver: Fix v2v3api set to create parent directly if not exists
When a new file is created under an non existent directly,
the v2 API automatically create the parent directly.
This commit aligns the behaviour of v2v3 emulation to comply with the v2
API.
2018-04-25 17:36:59 -07:00
Gyuho Lee
b6578c8f4d embed: error when different values are specified in "--log-output"
"--log-output default,a.log" should error out when etcd
runs as a systemd unit. We expect 'default' to be overridden
explicitly.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 17:09:22 -07:00
Gyuho Lee
755b508a8e Merge pull request #9632 from ericchiang/grpc-logs-spam
etcdctl/ctlv3/command: don't print gRPC WARNING logs by default
2018-04-25 17:02:06 -07:00
Eric Chiang
55001977ed etcdctl/ctlv3/command: don't print gRPC WARNING logs by default
Despite holding important information, these are too noisy.

See https://github.com/coreos/etcd/pull/9623
2018-04-25 15:26:54 -07:00
Gyuho Lee
62a385b1ca CHANGELOG-3.4: add v2v3 emulation fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 14:50:48 -07:00
Gyuho Lee
ccf959c0d4 Merge pull request #9624 from gyuho/journald
*: support journald with structured logging zap, rename to "--log-outputs"
2018-04-25 14:22:03 -07:00
Gyuho Lee
154e2ac38e embed: do not import journald dependencies on windows
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:52:53 -07:00
Gyuho Lee
9cd9ae284f pkg/logutil: do not build journald logger on windows
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:52:30 -07:00
Gyuho Lee
88c70d0ca9 embed,integration,snapshot: use "LogOutputs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:27:31 -07:00
Gyuho Lee
b748abca67 *: change typo in "auto-compaction-retention" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:26 -07:00
Gyuho Lee
58a603448a *: rename to "--log-outputs" in docs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:26 -07:00
Gyuho Lee
a6c30eab96 functional: rename to "log-outputs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:26 -07:00
Gyuho Lee
af5bc439b3 embed,etcdmain: rename to "--log-outputs" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:26 -07:00
Gyuho Lee
1539fddb27 etcd.conf.yml.sample: rename to "log-outputs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:26 -07:00
Gyuho Lee
22609a65b5 Documentation/upgrades: highlight "--log-outputs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:26 -07:00
Gyuho Lee
0e4c94c052 CHANGELOG: highlight "--log-outputs" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 13:20:22 -07:00
Gyuho Lee
a113d6c160 functional/rpcpb: change to LogOutputs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 11:05:09 -07:00
Gyuho Lee
53c5cd55f7 Documentation/upgrades: highlight "embed.Config.LogOutputs" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:49:37 -07:00
Gyuho Lee
d4987f4633 CHANGELOG: track logger changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:47:58 -07:00
Gyuho Lee
f99cb35d29 embed: rename "LogOutput" to "LogOutputs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:28:13 -07:00
Gyuho Lee
3ea7a5d0bd etcdserver: add "LoggerCore" field for Raft logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:16:54 -07:00
Gyuho Lee
d33a74d380 embed: add "loggerCore" field for Raft logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:16:51 -07:00
Gyuho Lee
a34dd272b0 pkg/logutil: change "NewRaftLogger" function signature
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:11:35 -07:00
Gyuho Lee
69c51e2c4a embed: change "loggerConfig" to "*zap.Config"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:05:12 -07:00
Gyuho Lee
6df3179c06 pkg/logutil: add "NewRaftLoggerFromZapCore"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:05:12 -07:00
Gyuho Lee
48d5542a76 embed: set journald logging with zap
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:05:12 -07:00
Gyuho Lee
1fa80bf520 pkg/logutil: add "NewGRPCLoggerV2FromZapCore"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:05:12 -07:00
Gyuho Lee
fcbb30364a pkg/logutil: add "NewJournaldWriter"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-25 10:05:12 -07:00
Gyuho Lee
e73f909fef Merge pull request #9623 from ericchiang/grpc-logs
etcdctl/ctlv3/command: enable gRPC WARNING logs by default
2018-04-25 09:44:49 -07:00
Gyuho Lee
189d24e00f Merge pull request #9627 from shenlanse/update-k8s-deploy
kubernetes-deploy: set etcd pod restartPolicy=Always
2018-04-25 09:44:03 -07:00
Gyuho Lee
b14ab95b38 Merge pull request #9625 from jpbetz/release-script-fixes
scripts: Fix a few etcd release script bugs and make it reenterant.
2018-04-25 09:43:25 -07:00
blueblue
01996012bb kubernetes-deploy: set etcd pod restartPolicy=Always 2018-04-25 10:00:18 +08:00
Joe Betz
bee6f34197 scripts: Fix a few etcd release script bugs and make it reenterant. 2018-04-24 17:03:14 -07:00
Eric Chiang
9ce295a812 etcdctl/ctlv3/command: enable gRPC WARNING logs by default 2018-04-24 16:19:02 -07:00
Joe Betz
f1b3b32745 CHANGELOG: Set release data of 3.1.14 and 3.2.19 2018-04-24 14:37:24 -07:00
Gyuho Lee
a0b4624f3b CHANGELOG-3.3: update v3.3.4 release date
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-24 13:45:16 -07:00
Gyuho Lee
7cc92fc2af Merge pull request #9618 from coreos/help-allowed-cn
etcdmain: document peer-cert-allowed-cn flag
2018-04-24 13:42:20 -07:00
Eric Chiang
30ee30ffeb etcdmain: document peer-cert-allowed-cn flag 2018-04-24 13:31:54 -07:00
Gyuho Lee
61404132a9 Merge pull request #9582 from jpbetz/release-script
[WIP] scripts: Add script that performs entire release workflow
2018-04-24 12:04:15 -07:00
Gyuho Lee
3802866870 Merge pull request #9597 from gyuho/flag-doc
Documentation/op-guide: add missing flags, clarify "--initial*" flags
2018-04-24 11:29:35 -07:00
Gyuho Lee
3da4c8a585 Merge pull request #9607 from jpbetz/changelog-3-1-14--3-2-19
CHANGELOG: Add 3.1.14 and 3.2.19 release notes
2018-04-23 16:54:34 -07:00
Joe Betz
f0a214db2a CHANGELOG: Add 3.1.14 and 3.2.19 release notes 2018-04-23 16:36:20 -07:00
Gyuho Lee
c8d08a8898 functional/tester: prevent embedded etcd running with failpoints
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-23 14:07:43 -07:00
Gyuho Lee
4f45f5d9dd Merge pull request #9591 from gyuho/election
*: add --initial-election-tick-advance to configure election fast-forward on bootstrap
2018-04-23 10:17:49 -07:00
Gyuho Lee
e81f9d850e Merge pull request #9601 from gyuho/doc-compact
*: improve compaction documentation
2018-04-23 10:14:22 -07:00
qiang.ou
ea639fdb7f Documentation/integrations: add PHP v3 client 2018-04-22 10:12:26 +08:00
Gyuho Lee
7459f017de Documentation/op-guide: add missing flags, clarify "--initial*" flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 15:57:53 -07:00
Gyuho Lee
e23ee1a1a7 Documentation/upgrades: clean up snapshot change doc
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 15:08:23 -07:00
Gyuho Lee
dab54fab3f Documentation/op-guide: improve compaction guide
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 15:08:21 -07:00
Gyuho Lee
353f938b8d Merge pull request #9599 from gyuho/test-parallel
*: parallelize integration tests with CPU parameters
2018-04-20 14:40:22 -07:00
Gyuho Lee
afef4a594a travis: parallelize integration with CPU parameters
To maximize our Travis 5-worker usage.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 14:10:33 -07:00
Gyuho Lee
ad4b747ed4 test: configure go test -cpu flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 14:10:30 -07:00
Gyuho Lee
83f7f174da etcdserver: print server configuration duration fields in string
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 13:11:11 -07:00
Gyuho Lee
e5d160fceb Merge pull request #9598 from gyuho/compaction
*: highlight breaking change in compaction retention
2018-04-20 13:01:26 -07:00
Gyuho Lee
6af44fa4fe Documentation/upgrades: highligh YAML auto-compaction-retention flag change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 12:58:32 -07:00
Gyuho Lee
fafa672f87 CHANGELOG: clarify compaction YAML type
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 12:04:25 -07:00
Gyuho Lee
5f8abdc227 etcdserver: log auto compaction on server start
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 11:58:36 -07:00
Gyuho Lee
8b68a71cb5 etcd.conf.yml.sample: remove deprecated fields
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 11:51:34 -07:00
Gyuho Lee
0411b89d69 pkg/proxy: fix fmt
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 11:26:38 -07:00
Gyuho Lee
f205b22434 etcdserver: fix snapshot panic message
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 11:20:17 -07:00
Gyuho Lee
01fc2901b6 etcdmain: sync logger on exit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 10:58:33 -07:00
Gyuho Lee
c76c696ed7 embed: sync logger on server close
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 10:54:37 -07:00
Gyuho Lee
337a751180 Merge pull request #9595 from gyuho/ppp
pkg/proxy: strip host on local listener
2018-04-20 10:40:08 -07:00
Gyuho Lee
8006d3305e pkg/proxy: strip host on local listener
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 10:35:01 -07:00
Gyuho Lee
8058513d84 *: clarify gRPC gateway changelogs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-20 10:33:03 -07:00
Gyuho Lee
2d7cb9dac7 CHANGELOG: add latest changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:45:23 -07:00
Gyuho Lee
21d2e2ab6e etcdserver: add more tick fast-forward logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:45:23 -07:00
Gyuho Lee
85b7a59c56 etcdmain: add "--initial-election-tick-advance"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:45:23 -07:00
Gyuho Lee
bffc532f9f embed: add "InitialElectionTickAdvance"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:45:23 -07:00
Gyuho Lee
3fe9030d34 integration: set InitialElectionTickAdvance to true by default
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:45:23 -07:00
Gyuho Lee
4bec0d7d67 etcdserver: add "InitialElectionTickAdvance"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:45:23 -07:00
Gyuho Lee
b933603a43 functional: add TODO for network isolate tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:44:16 -07:00
Gyuho Lee
f5b8e1eb95 functional/tester: log start revision
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 17:40:08 -07:00
Gyuho Lee
25cc3bb71b Merge pull request #9588 from gyuho/aaa
rafthttp: add more debugging logs
2018-04-19 13:26:47 -07:00
Gyuho Lee
87dfe53798 Procfile: use zap in Procfile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 13:19:02 -07:00
Gyuho Lee
8296ce0930 rafthttp: add/fix debugging lines
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-19 13:18:57 -07:00
Gyuho Lee
8f8b32b253 Merge pull request #9587 from mborsz/is_leader
etcdserver: add is_leader prometheus metric that is 1 on the leader.
2018-04-19 10:04:34 -07:00
Gyuho Lee
b0112086d6 Merge pull request #9354 from hexfusion/u_sock
embed: explicitly define unix proto
2018-04-19 08:16:38 -07:00
Maciej Borsz
46bc966aa7 etcdserver: add is_leader prometheus metric that is 1 on the leader.
Before this change, we had now way to find a leader using /metrics
endpoint. This commit adds a metric to do that.
2018-04-19 11:47:40 +02:00
Gyuho Lee
e5c9483cd8 Merge pull request #9511 from jcalvert/index_compaction_breakup
mvcc: Clone for batch index compaction and shorten lock
2018-04-18 15:24:21 -07:00
Joe Betz
7750974760 scripts: Add scripts/release that performs 'etcd-release-runbook' (https://goo.gl/Gxwysq) style release workflow 2018-04-18 13:35:41 -07:00
jocalvert
f176427791 mvcc: Clone the key index for compaction and lock on each item
For compaction, clone the original Btree for traversal purposes, so as to
not hold the lock for the duration of compaction. This allows read/write
throughput by not blocking when the index tree is large (> 1M entries).

mvcc: add comment for index compaction lock
mvcc: explicitly unlock store to do index compaction synchronously
mvcc: formatting index bench
mvcc: add release note for index compaction changes
mvcc: add license header
2018-04-18 13:29:27 -07:00
Gyuho Lee
d0847f4f25 *: clean up/fix server structured logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-18 12:54:43 -07:00
Gyuho Lee
229a0c9da6 Merge pull request #9580 from gyuho/log
embed: clean up initial server start logs
2018-04-17 15:01:52 -07:00
Gyuho Lee
9c0c3cd606 Merge pull request #9579 from gyuho/log-output-multiple-files
*: support output logs to multiple files
2018-04-17 14:39:28 -07:00
Gyuho Lee
a47c18ff5b embed: clean up initial server start logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 14:24:08 -07:00
Gyuho Lee
6fec93fe42 CHANGELOG-3.4: highlight YAML log-output change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 13:34:07 -07:00
Gyuho Lee
bf8601676e Documentation/upgrades: highlight YAML change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 13:31:25 -07:00
Gyuho Lee
7215e54755 etcd.conf.yml: change "log-output" type
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 13:29:23 -07:00
Gyuho Lee
8ee87787dd functional: use strings for LogOutput
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 13:03:09 -07:00
Gyuho Lee
671e4a50bc CHANGELOG-3.4: add "LogOutput" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
8049df15c4 CHANGELOG-3.4: highlight embed.Config.LogOutput field change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
cd7bfe1ea5 integration: set strings for LogOutput
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
3e99487372 snapshot: set string for LogOutput
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
1974785511 etcdmain: accept multiple values in "--log-output"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
bf937535f5 embed: change "Config.LogOutput" to []string
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
954afc9156 CHANGELOG-3.4: highlight multi-log writer change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
f6f1e0cb65 embed: support multiple log outputs for structured logging
Zap support multi-writer by default.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:47:06 -07:00
Gyuho Lee
406f23ce17 README: update meeting notes link
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 12:05:14 -07:00
Gyuho Lee
41b855a48e Merge pull request #9577 from gyuho/null
*: use /dev/null to discard server logs
2018-04-17 10:33:52 -07:00
Gyuho Lee
674388f599 integration: use /dev/null to discard server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 06:14:03 -07:00
Gyuho Lee
7c10c12ce7 snapshot: use /dev/null to discard server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 06:13:52 -07:00
Gyuho Lee
a31c38f3b0 embed: use /dev/null to discard server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 06:13:24 -07:00
Gyuho Lee
0e4c8dcedc CHANGELOG-3.4: use "/dev/null" to ignore logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-17 06:13:10 -07:00
Gyuho Lee
46e19d21a1 Merge pull request #9572 from gyuho/eee
functional: run tests with embedded etcd, add logger field
2018-04-16 19:09:45 -07:00
Gyuho Lee
18b3e45e96 *: support --log-output=discard
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 19:09:09 -07:00
Gyuho Lee
1c44293f7e tests/e2e: comment out TestEtcdCorruptHash debugging lines
No need

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 19:04:34 -07:00
Gyuho Lee
a3b9d828ed tests/e2e: fix gateway tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 18:25:30 -07:00
Gyuho Lee
92c32743c9 tests/e2e: fix TestIssue6361
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 18:01:12 -07:00
Gyuho Lee
ae9ccd883d etcdctl/ctlv3: fix snapshot command e2e tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
b7ce6b7265 Documentation/upgrades: highlight wal, embed changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
c716bea43c CHANGELOG-3.4: highlight WAL changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
f63b5c15c7 functional/agent: fix etcd exec path check
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
2ee2a96055 functional/tester: use binary for tests for now
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
d1c2ae86ce functional/tester: handle "raft.ErrProposalDropped"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
35a80bc910 integration,embed: ignore embed log output
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
cc778746fc embed: support "io-discard" for logging, fix racey logging setup
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
38e32a1b54 snapshot: ignore server logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
2bd88e378c pkg/transport: check nil logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
f34c5dc902 functional/tester: run tests with embedded etcd
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
677894b4fa functional/agent: support embedded etcd
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
c712e08a42 embed,etcdmain: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
a7fd274c11 integration: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07: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
6dbce6b9a4 clientv3,etcdctl: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
d1c7d40a5e snapshot: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
f57fa6abaf auth: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
ce8348e3e0 raftsnap: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
c68f625353 rafthttp: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
fdbedacc83 wal: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
c00c6cb685 mvcc: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
0dad8abb6f pkg: support structured logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
bdbed26f64 etcdserver: support structured logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
f879c1de33 integration: use default logger "capnslog"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
d5d4025f9a CHANGELOG-3.4: highlight logger change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
041b9069a2 *: configure server logger
- Add/Document "logger" to support structured logging.
  - This makes functional tests run easier, since zap logger
    provides built-in log redirect to files.
  - "etcd --logger-option=zap" to enable structured logging.
- Current "capnslog" will still be used as "default".
  - We may switch the default or deprecate "capnslog" in v3.5.
  - Either way, will clearly be documented.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
82e84a09e1 pkg/logutil: add "NewGRPCLoggerV2FromZap", "NewRaftLogger"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
33128104c0 functional/agent: handle "embed.Etcd", logger sync
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
575cf94852 functional/rpcpb: add "*Etcd.EmbedConfig", and logger fields
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-16 17:36:00 -07:00
Gyuho Lee
f3b7fa545e Merge pull request #9574 from gyuho/btree
vendor: upgrade "google/btree"
2018-04-16 17:35:46 -07:00
jocalvert
96142c2d00 vendor: upgrade "google/btree" 2018-04-16 16:54:44 -07:00
Gyuho Lee
ff6ff9d6e6 Merge pull request #9570 from gyuho/tls
*: fix TLS reload when cert includes only IPs (no domain names in SAN field)
2018-04-16 08:02:18 -07:00
Sam Batschelet
2e4f856389 embed: explicitly define unix network 2018-04-15 16:30:44 -04:00
Gyuho Lee
00b529e810 pkg/proxy: fix typos in field names
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-14 12:00:41 -07:00
Gyuho Lee
9886e2161d Merge pull request #9571 from gyuho/net
pkg/proxy: make/simplify interface more extensible
2018-04-14 11:57:01 -07:00
Gyuho Lee
5db4df762b pkg/proxy: make/simplify interface more extensible
Extend proxy for more advanced corrupt and packet drop testing.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-14 07:32:26 -07:00
Gyuho Lee
03cf9c45f8 etcdserver: fix typo in "adjustTicks"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 14:53:51 -07:00
Gyuho Lee
0b0a943a5e CHANGELOG: highlight TLS reload fixes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 14:19:37 -07:00
Gyuho Lee
ca86daeb76 Documentation/op-guide: explain TLS reload fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 14:19:37 -07:00
Gyuho Lee
3f8d1738de pkg/transport: document how TLS reload works with IP only certs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 14:19:37 -07:00
Gyuho Lee
68802b333b integration: re-overwrite "httptest.Server" TLS.Certificates
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 14:19:34 -07:00
rob boll
88c078d4bd pkg/transport: don't set certificates on tls config 2018-04-13 13:17:27 -07:00
Gyuho Lee
b705f6f8f2 Revert "integration: fix httptest TLS server start"
This reverts commit 3d3ba8b9cb.
2018-04-13 13:06:09 -07:00
Gyuho Lee
6ab9776601 integration: add "TestTLSReloadCopyIPOnly"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 13:02:45 -07:00
Gyuho Lee
233af4b4ec integration: add IP only TLSInfos
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 12:03:55 -07:00
Gyuho Lee
72e23a2b1b integration/fixtures-expired: add IP only certs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 12:01:35 -07:00
Gyuho Lee
334affa272 integration/fixtures: add IP only certs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 11:58:36 -07:00
Gyuho Lee
3d3ba8b9cb integration: fix httptest TLS server start
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 11:16:54 -07:00
Gyuho Lee
08641dd48b .github: simplify templates
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 11:11:01 -07:00
Gyuho Lee
f61528768e .github: clean up TEMPLATES
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 11:05:54 -07:00
Gyuho Lee
487ea49442 dockerignore: remove
We don't have "Dockerfile" in repo root anymore.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 11:02:12 -07:00
Gyuho Lee
8e00d764be gitignore: remove outdated lists
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 11:01:19 -07:00
Gyuho Lee
9824959923 godir: remove
Godep is not used anymore.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-13 10:58:53 -07:00
Gyuho Lee
0a92ba66fa functional/tester: fix racey map writes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 13:21:52 -07:00
Gyuho Lee
d69b7d28a0 MAINTAINERS: remove deprecated CoreOS email, update other maintainers
With latest email addresses.

CoreOS emails are being deprecated in a few weeks.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 11:51:56 -07:00
Gyuho Lee
73446a51f5 V2Procfile: remove unused Procfile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 11:49:11 -07:00
Gyuho Lee
dfd5f1826f CHANGELOG: add 3.5, highlight gRPC gateway breaking changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 11:46:43 -07:00
Gyuho Lee
2fc7fc1707 CHANGELOG: highlight "snapshot" package and godoc link
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 11:27:02 -07:00
Gyuho Lee
1ac5007b4d Merge pull request #9568 from gyuho/sss
snapshot: enforce single endpoint to "Save" method
2018-04-12 11:23:29 -07:00
Gyuho Lee
5ba4e7d533 functional/tester: fix unit tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 10:49:48 -07:00
Gyuho Lee
8ae2bbf3c4 functional/rpcpb: use new snapshot package interface
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 10:49:48 -07:00
Gyuho Lee
90e5af76f3 etcdctl/ctlv3: use new snapshot package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 10:49:48 -07:00
Gyuho Lee
a2b1449431 snapshot: enforce single endpoint in client, change interface
To enforce single endpoint in client configuration.
And pass client object only to "Save" method.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-12 10:49:45 -07:00
Gyuho Lee
70341b1614 Merge pull request #9565 from gyuho/quorum-disaster
functional: simulate quorum disaster
2018-04-11 21:47:37 -07:00
Gyuho Lee
f72449c637 functional.yaml: skip recover test for now
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 21:13:27 -07:00
Gyuho Lee
ce19e0b4b5 functional: increase dial timeout
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 20:18:17 -07:00
Gyuho Lee
554dfaa4ba functional/tester: fix govet errors
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:53:54 -07:00
Gyuho Lee
099f109850 CHANGELOG-3.4: add quorum loss failure case
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
23ce3a1acc functional: rename to "listCases"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
d275437c05 functional/tester: whitelist lease expire checker on snapshot restore
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
f574a9aaed functional/tester: add "EtcdClientEndpoints" to "Checker"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
e9c4bad2d1 functional/tester: add "Checker", remove compositeChecker
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
2fc3eb0c56 functional/rpcpb: clean up Checker
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
448e0fc481 functional: wait election timeout after member add
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
bd235ab8f9 functional/tester: save SnapshotInfo from response
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
f56d2c61b2 functional/rpcpb: fix os.Remove error in SnapshotPath
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
888b55e91b functional/tester: implement fetchSnapshotCaseQuorum
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
7213a9aabc functional/agent: handle "RESTART_FROM_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
606fa6fd96 functional/rpcpb: add "RESTART_FROM_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
f725bace31 functional/agent: implement "handle_RESTORE_SNAPSHOT_AND_RESTART_ETCD"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
b2b37928e3 functional/rpcpb: implement "RestoreSnapshot"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
a44a88ce79 functional/rpcpb: add "RESTORE_SNAPSHOT_AND_RESTART_ETCD"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
3815d6edb7 functional: rename "FailureCase" to "Case"
Later to add benchmark marks

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
251e783d3f functional/rpcpb: add "EtcdOnSnapshotRestore"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
3c5147d906 functional/tester: implement "fetchSnapshotAndFailureQuorum"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
6b128bfb3b functional/tester: rename files, adding LEADER_SNAPSHOT case
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
e2bb03b39b functional/tester: add sendOpWithResp for SnapshotInfo
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
e859883e78 functional: add "SnapshotInfo"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
ca137afe8a functional: rename to "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
f9127dba9c functional/tester: implement "new_FailureCase_SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_SNAPSHOT_FROM_SCRATCH"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
67e398c86a functional/cluster: handle "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_SNAPSHOT_FROM_SCRATCH"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
473a472607 functional/tester: fix "failureQuorum"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
2942a8044d functional/agent: add "handle_FETCH_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
587dd4e732 functional/rpcpb: add "FETCH_SNAPSHOT" Operation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
2b249902da functional/rpcpb: implement FetchSnapshot
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
77824c2ed6 functional: add "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_SNAPSHOT_FROM_SCRATCH" to functional.yaml
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
f04902dbed functional: rename etcd log paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
4e7705e9e5 functional: add snapshot path to configuration
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
fdf4a12d3c test: rename etcd functional test data directories
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
a0c0dc2f09 functional/rpcpb: add "Member.SnapshotPath", more description
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
81f632f2a1 functional/rpcpb: add "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_SNAPSHOT_FROM_SCRATCH"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:52:23 -07:00
Gyuho Lee
3f29d25cfa CHANGELOG: add v2 server stat fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 19:51:42 -07:00
Gyuho Lee
836fffa22a Merge pull request #9562 from disksing/data-race
etcdserver/stats: fix stats data race.
2018-04-11 19:46:49 -07:00
disksing
10bf0283be etcdserver/stats: make all fields guarded by mutex. 2018-04-12 10:43:11 +08:00
Gyuho Lee
2c1840c1b8 Documentation/dev-guide: make indentation consistent
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 11:32:16 -07:00
Gyuho Lee
9df1964aeb Documentation/dev-guide: highlight gRPC gateway endpoint changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 10:40:59 -07:00
Gyuho Lee
1fa2e93051 CHANGELOG-3.4: track functional tests with membership reconfiguration
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 10:26:30 -07:00
Gyuho Lee
c77ffcc505 Merge pull request #9564 from gyuho/membership-reconfiguration-tests
functional: add membership reconfiguration tests
2018-04-11 10:25:39 -07:00
Gyuho Lee
512445f089 functional: do not run "SIGQUIT_AND_REMOVE_LEADER" for now
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 10:24:42 -07:00
disksing
ba59bb2c2b etcdserver/stats: fix stats data race. 2018-04-11 21:37:09 +08:00
Gyuho Lee
d7bf471199 functional/tester: add TODO for member remove fail
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 02:07:22 -07:00
Gyuho Lee
15791d7f1f functional.yaml: add godoc link to FailureCase
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:52:34 -07:00
Gyuho Lee
7ed4803fb0 test: remove "-a" GO_BUILD_FLAGS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:45:06 -07:00
Gyuho Lee
3c7ec0cdc8 functional/tester: update import path
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:42:33 -07:00
Gyuho Lee
23b8c36ced functional/tester: add "SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:37:13 -07:00
Gyuho Lee
ee79799f61 functional/rpcpb: add "SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:35:32 -07:00
Gyuho Lee
17351e5fe7 functional/tester: add "SIGQUIT_AND_REMOVE_LEADER"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:32:07 -07:00
Gyuho Lee
85da6427bb functional/rpcpb: add "SIGQUIT_AND_REMOVE_LEADER"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:30:05 -07:00
Gyuho Lee
6a60a204ee functional/tester: add "SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:27:39 -07:00
Gyuho Lee
17749d3a36 functional/rpcpb: add "SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:25:36 -07:00
Gyuho Lee
724dea114c functional/tester: clean up snapshot failure cases
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:25:07 -07:00
Gyuho Lee
9057253d8c functional: add "SIGQUIT_AND_REMOVE_ONE_FOLLOWER"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:21:09 -07:00
Gyuho Lee
86deeab77a functional/agent: handle "SIGQUIT_ETCD_AND_REMOVE_DATA"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:19:33 -07:00
Gyuho Lee
7e56c3e737 test: remove backup data from functional tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:18:15 -07:00
Gyuho Lee
06bbd65a11 functional/build: remove "-a" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 01:07:34 -07:00
Gyuho Lee
e98a5c15e4 functional/rpcpb: add "SIGQUIT_AND_REMOVE_ONE_FOLLOWER"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-11 00:03:47 -07:00
Gyuho Lee
f46368c6e9 Merge pull request #9560 from gyuho/ttt
*: parallelize tests, remove redundant tests, Phase 1
2018-04-10 19:17:06 -07:00
Gyuho Lee
6cf9979cf0 test: remove wait commands
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 18:38:01 -07:00
Gyuho Lee
67645ebc66 bill-of-materials.json: regenerate without "bitbucket.org/ww/goautoneg"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 18:38:01 -07:00
Gyuho Lee
efe981e618 Revert "etcdserver: handle raft Propose error in v2 applier"
This reverts commit b38e138baf.
2018-04-10 18:38:01 -07:00
Gyuho Lee
6da2e51627 tests/semaphore: only run e2e tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 18:37:54 -07:00
Gyuho Lee
9585153615 travis.yml: add more concurrent jobs including functional tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 18:37:49 -07:00
Gyuho Lee
eabb40f0ae test: combine "compile_pass" into "build_pass"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 17:07:42 -07:00
Gyuho Lee
01678b3790 CHANGELOG: update with pending release items
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 17:05:33 -07:00
Gyuho Lee
e9aa8fbcc3 Merge pull request #9558 from gyuho/propose
etcdserver: handle raft Propose error in v2 applier
2018-04-10 16:49:33 -07:00
Gyuho Lee
b38e138baf etcdserver: handle raft Propose error in v2 applier
Handle "raft.ErrProposalDropped" as in v3 applier.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 16:01:14 -07:00
Gyuho Lee
943962d419 Merge pull request #9557 from gyuho/lease-metrics
etcdserver: fix "lease_expired_total" metrics
2018-04-10 16:00:29 -07:00
Gyuho Lee
cf0a138d83 bill-of-materials.json: regeneratea for "bitbucket.org/ww/goautoneg"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 15:58:20 -07:00
Gyuho Lee
170c8bb3a7 Merge pull request #9555 from gyuho/aaa
clientv3/integration: log test failures from slow balancer as TODO
2018-04-10 15:26:45 -07:00
Gyuho Lee
744c73e019 etcdserver: fix "lease_expired_total" metrics
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 13:57:17 -07:00
Gyuho Lee
3a7b5c1b2b clientv3/integration: log test failures from slow balancer as TODO
Balancer tests have been flaky since last balancer rewrite.
Should be from slow balancer failover. Once we re-rewrite balancer
with roundrobin, there should be no more flaky tests as below:

TestBalancerUnderServerStopInflightLinearizableGetOnRestart (27.62s)
server_shutdown_test.go:343: context deadline exceeded

TestBalancerUnderServerShutdownDelete (3.22s)
util.go:32: context deadline exceeded

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-10 13:47:07 -07:00
Gyuho Lee
e095ee48f4 CHANGELOG-3.4: clarify "ErrProposalDropped" on leadership transfer
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 15:26:06 -07:00
Gyuho Lee
13b7d7126f Merge pull request #9551 from gyuho/vvv
vendor: upgrade "spf13/cobra" and "spf13/pflag"
2018-04-09 15:14:51 -07:00
Gyuho Lee
fe26434a89 Merge pull request #9494 from gyuho/ugorji/go
client: regenerate with latest "ugorji/go/codec"
2018-04-09 15:14:37 -07:00
Gyuho Lee
9cce7c71b8 tests/docker: fix indentation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 15:13:09 -07:00
Gyuho Lee
367b21c898 tests/Dockerfile: add "REPLACE_ME_GO_VERSION" back
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 15:10:48 -07:00
Gyuho Lee
53e7621026 functional/tester: remove unnecessary health check log
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 14:57:13 -07:00
Gyuho Lee
eceacac0fc Merge pull request #9549 from nolouch/handle-fail
etcdserver: handle proposal error when processing internal raft request
2018-04-09 14:56:17 -07:00
Gyuho Lee
e75d06d932 CHANGELOG-3.4: highlight etcd server "raft.ErrProposalDropped" return
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 14:47:07 -07:00
nolouch
3c52342b37 etcdserver: handle proposal error when processing internal raft request
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 14:44:57 -07:00
Gyuho Lee
f4e01584fc CHANGELOG-3.4: update "ugorji/go"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 14:39:54 -07:00
Gyuho Lee
ab89af6dd3 vendor: use "ugorji/go" v1.1.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 14:37:03 -07:00
Gyuho Lee
91664ec5ac client: manually delete "yynn2 = 0"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
13c440dea4 client: regenerate with f3cacc17c85ecb7f1b6a9e373ee85d1480919868
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
55b0943f6d CHANGELOG-3.4: upgrade "ugorji/go" to f3cacc17c85ecb7f1b6a9e373ee85d1480919868
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
b1c86d6baf vendor: upgrade "ugorji/go" to f3cacc17c85ecb7f1b6a9e373ee85d1480919868
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
ebba9ed29e client: regenerate
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
f8ed939e49 CHANGELOG-3.4: update "ugorji/go/codec" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
13d8784eee vendor: update "ugorji/go/codec"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:50 -07:00
Gyuho Lee
471c6070f2 bill-of-materials.json: regenerate
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:24 -07:00
Gyuho Lee
8103dc2fd4 CHANGELOG-3.4: highlight "spf13/cobra,pflag" changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:24 -07:00
Gyuho Lee
07a5a09fc8 vendor: upgrade "spf13/cobra,pflag" to latest
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:42:24 -07:00
Gyuho Lee
89c58b6f7a tests/e2e: fix "configJWT" path
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:41:46 -07:00
Gyuho Lee
b6209db93e README: add links to "functional"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:33:47 -07:00
Gyuho Lee
824982d1eb tests/e2e: fix TestEtcdExampleConfig
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:12:55 -07:00
Gyuho Lee
422acc9018 tests/e2e: fix COVERDIR path
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 12:46:55 -07:00
Gyuho Lee
dca14df161 functional: add links to "godoc"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 12:41:51 -07:00
Gyuho Lee
f6cb732fff build: fix tools/build tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 11:55:10 -07:00
Gyuho Lee
2d13894a16 integration: fix "fixtures-expired" path
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 11:49:42 -07:00
Gyuho Lee
b756cb100c hack/benchmark: add back (for docs)
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 11:22:45 -07:00
Gyuho Lee
a8a5176f1d tests/e2e: fix exec paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 11:12:42 -07:00
Gyuho Lee
59666d7e03 Merge pull request #9550 from gyuho/ttt
*: reorganize internal test scripts
2018-04-09 11:02:43 -07:00
Gyuho Lee
a60bb6104c *: regenerate "fixtures-expired"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:59:52 -07:00
Gyuho Lee
774f6652df semaphore.sh: move to "tests/semaphore.test.bash"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:48:54 -07:00
Gyuho Lee
0e7f1100e3 cover: move coverage test script to "tests"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:47:32 -07:00
Gyuho Lee
0c327ea456 test: move "e2e" and "functional"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:47:25 -07:00
Gyuho Lee
72211db7cf tests: move internal "e2e"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:37:28 -07:00
Gyuho Lee
d636abc2d4 Dockerfile: remove
We don't have build triggers anymore.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:35:39 -07:00
Gyuho Lee
784b6528d2 *: move "Dockerfile-functional"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:35:21 -07:00
Gyuho Lee
20e1179fac Dockerfile-test: move to "tests"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:33:25 -07:00
Gyuho Lee
140374e25d *: move "scripts/docker-*" to "tests"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:31:00 -07:00
Gyuho Lee
b59e91d676 hack/benchmark: remove v2 benchmark
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:29:10 -07:00
Gyuho Lee
6e3652f42c README: update "Community meetings"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:28:04 -07:00
Gyuho Lee
10a51a3003 Merge pull request #9548 from gyuho/functional-tester
functional-tester: clean up, handle Operation_SIGQUIT_ETCD_AND_REMOVE_DATA
2018-04-09 10:20:00 -07:00
Gyuho Lee
c16e411d51 functional/tester: fix shadowed "err" variable
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:19:31 -07:00
Gyuho Lee
bc1fd92579 functional: rename to "SIGTERM/SIGQUIT*"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-08 23:17:53 -07:00
Gyuho Lee
cd4580b4a9 functional: move "etcd-test-proxy"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-08 14:59:39 -07:00
Gyuho Lee
b8bf42cc5a pkg/fileutil: test "Exist" on directory
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-08 14:26:30 -07:00
Gyuho Lee
f53c153fa9 pkg/stringutil: add tests
For later "runner" cleanup

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-08 14:18:09 -07:00
Gyuho Lee
d8a2d3a209 functional/tester: delay after injecting "kill" to trigger election
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:40:00 -07:00
Gyuho Lee
68adc6e300 functional/rpcpb: document FailureCase
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 13:39:42 -07:00
Gyuho Lee
ecadb0fdf7 functional/tester: improve logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 11:28:11 -07:00
Gyuho Lee
7facfde6fd functional/tester: handle "process already finished"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:52:19 -07:00
Gyuho Lee
2922116be5 functional/tester: clean up runner logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:40:27 -07:00
Gyuho Lee
054721166f functional/tester: add "printReport"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:22:17 -07:00
Gyuho Lee
0e609154c4 functional/tester: clean up "broadcastOperation"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 10:16:52 -07:00
Gyuho Lee
cafa3b9217 functional/agent: handle static TLS certs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 09:38:40 -07:00
Gyuho Lee
ef594eb727 functional/tester: handle static certs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-09 09:23:45 -07:00
Gyuho Lee
c57a70caef CHANGELOG-3.4: update
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-07 10:00:06 -07:00
Gyuho Lee
85e050a120 *: rename, clean up functional tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-07 10:00:00 -07:00
Gyuho Lee
b7770cd9fe README: change Community Meeting to use BlueJeans
https://bluejeans.com/2732309610

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-06 13:48:49 -07:00
Gyuho Lee
ff455e3567 Merge pull request #9540 from gyuho/hhh
ctlv3: support "write-out" for "endpoint health" command
2018-04-06 13:25:11 -07:00
Gyuho Lee
c54636ac92 Merge pull request #9538 from gyuho/lll
snapshot: use structured logger
2018-04-06 13:17:28 -07:00
Gyuho Lee
881fd20b17 CHANGELOG-3.4: add "endpoint health" fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-06 11:34:23 -07:00
Gyuho Lee
d019d3141a ctlv3: support "write-out" for "endpoint health" command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-06 11:31:00 -07:00
Gyuho Lee
18b1d1ff65 ctlv3: update logger for snapshot command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-06 11:05:58 -07:00
Gyuho Lee
bf47197f35 snapshot: use structured logger
In the process of removing capnslog

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-06 10:59:48 -07:00
Gyuho Lee
c91a61be00 Merge pull request #9534 from gyuho/test-tls
functional-tester: enable TLS, phase 1
2018-04-05 17:07:35 -07:00
Gyuho Lee
a0b094ca89 functional-tester/agent: add TODO for proxy TLS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 16:11:36 -07:00
Gyuho Lee
62e512d4cc functional-tester/rpcpb: create client with "InsecureSkipVerify"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 16:11:36 -07:00
Gyuho Lee
31a4b692ee functional-tester/agent: wait before loading TLS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 16:11:36 -07:00
Gyuho Lee
4998db4e64 functional-tester/tester: send TLS client requests, cleanup
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 16:11:28 -07:00
Gyuho Lee
63755e49fc functional-tester/rpcpb: add "etcd-client-tls", "tester-data-dir"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
8f71afd6e2 functional-tester/rpcpb: remove "EtcdClientTLS" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
161f09ab69 functional-tester/agent: responds with server-side TLS assets to tester
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
6ceb71efb1 functional-tester/rpcpb: include "Member" in "Response"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
b70f9e1639 functional-tester/tester: add TLS flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
f4f59750a8 functional-tester/agent: use "AdvertisePeerURLs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
09a4e059c5 functional-tester/rpcpb: rename "AdvertisePeerURLs", add more tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
1580289ba3 functional-tester/rpcpb: add TLS flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
13bf22ba51 functional-tester: update README
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:17 -07:00
Gyuho Lee
bae97ebd55 CHANGELOG-3.4: update functional tester
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 15:54:14 -07:00
Gyuho Lee
72ba5572a2 pkg/proxy: godoc package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 12:57:44 -07:00
Gyuho Lee
b0f6afc192 Merge pull request #9530 from gyuho/aaa
functional-tester: run network fault tests with snapshot trigger
2018-04-05 12:51:39 -07:00
Gyuho Lee
ea4effce84 functional-tester/tester: add randomize delay
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 12:03:20 -07:00
Gyuho Lee
3a93f1c803 functional-tester/rpcpb: fix duplicate field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:34:59 -07:00
Gyuho Lee
35d8bc2616 functional-tester: use updated latency for delay network case
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:33:14 -07:00
Gyuho Lee
273dc355c1 functional-tester/tester: add random delay failure cases
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:22:38 -07:00
Gyuho Lee
b9aa49be2d functional-tester/rpcpb: add random delay network failure cases
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:18:17 -07:00
Gyuho Lee
e9d5c67b89 functional-tester/tester: reduce retries in slow network
Now configure slow network cases with latency greater than election timeout.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:07:46 -07:00
Gyuho Lee
3f7f3ab614 CHANGELOG-3.4: update functional-tester
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:06:38 -07:00
Gyuho Lee
4d1f60bb21 etcd-test-proxy: use "proxy.Server"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:06:38 -07:00
Gyuho Lee
9d3809646a functional-tester/agent: use "proxy.Server"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:06:38 -07:00
Gyuho Lee
7f812ca8e1 pkg/proxy: move from "pkg/transport"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 11:06:30 -07:00
Gyuho Lee
a831d15751 functional-tester/tester: configure heartbeat interval, election timeout
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 10:39:07 -07:00
Gyuho Lee
451395449a functional-tester/tester: add "heartbeat-interval", "election-timeout"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 10:37:16 -07:00
Gyuho Lee
32c34b582a functional-tester/agent: clean up handler logs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 10:29:31 -07:00
Gyuho Lee
190119569a functional-tester/rpcpb: add "trigger snapshot" cases for network faults
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 10:29:31 -07:00
Gyuho Lee
f4cd33b83c functional-tester/tester: add network fault test cases with snapshot trigger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-05 10:29:28 -07:00
Gyuho Lee
95119a769e Merge pull request #9529 from gyuho/fff
functional-tester: expect no client error in liveness mode
2018-04-04 18:18:07 -07:00
Gyuho Lee
3ae47a8619 functional-tester/tester: expects no error in NO_FAIL_WITH_STRESS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 17:30:12 -07:00
Gyuho Lee
49d4fbdde9 Merge pull request #9528 from gyuho/no-op
functional-tester: add liveness mode
2018-04-04 15:47:53 -07:00
Gyuho Lee
394189d399 functional-tester/tester: remove unused "nopStresser"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 14:13:38 -07:00
Gyuho Lee
a7ec9f28e3 functional-tester/tester: fix "Desc" calls
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:53:43 -07:00
Gyuho Lee
d7b468ec6f test: bump up test timeout to 20m
Recently, we've added bunch of tests...

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:45:12 -07:00
Gyuho Lee
83739dc9cb functional-tester/tester: clean up stresser logic for liveness mode
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:42:30 -07:00
Gyuho Lee
a43bd84631 functional-tester/tester: implement liveness mode failure case
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:29:24 -07:00
Gyuho Lee
33753d4ae6 functional-tester/tester: add "failure-delay-ms" for configurable triggerElectionDur
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:15:50 -07:00
Gyuho Lee
ca310c5918 functional-tester/rpcpb: add "FailureDelayMs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:11:01 -07:00
Gyuho Lee
0c20902d13 functional-tester/tester: add "newFailureNoFailWithNoStressForLiveness"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:07:45 -07:00
Gyuho Lee
808966a7e9 functional-tester/tester: refactor cluster code to support liveness mode
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:04:21 -07:00
Gyuho Lee
b3fea7ed53 functional-tester/tester: refactor "Failure" to support liveness mode
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:03:57 -07:00
Gyuho Lee
3510e9b94c functional-tester/tester: pass "*rpcpb.Member" to stresser
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 13:03:06 -07:00
Gyuho Lee
88a0f4c6b2 functional-tester/rpcpb: add liveness mode for failure case
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 12:37:51 -07:00
Gyuho Lee
8219c7f273 Makefile: clean up "gopath.proto"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 10:52:01 -07:00
Gyuho Lee
e37d6a2842 CHANGELOG-3.4: add recent Raft and logger changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-04 10:46:21 -07:00
Xiang Li
949c6fef35 Merge pull request #9137 from absolute8511/raft-proposal-cancel
raft: Propose in raft node wait the proposal result so we can fail fast while dropping proposal
2018-04-04 09:23:17 -07:00
Gyuho Lee
d8dc29e5d8 Merge pull request #9519 from gyuho/heap
lease: remove unnecessary O(log N) heap operation when nothing is expiry
2018-04-03 15:22:52 -07:00
Gyuho Lee
d7cf2cc03f Merge pull request #9525 from gyuho/ft
functional-tester: use "clientv3" for stressers
2018-04-03 15:21:48 -07:00
Gyuho Lee
75f562224a Merge pull request #9524 from gyuho/kv
etcdserverpb: document "Hash" and "HashKV" more clearly
2018-04-03 14:08:12 -07:00
Gyuho Lee
6d69e16a0a functional-tester/tester: fix txn op, nil clientv3
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 13:44:39 -07:00
Gyuho Lee
a80a1a6356 functional-tester/tester: use "*clientv3.Client" for lease stresser
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 13:33:35 -07:00
Gyuho Lee
00ed41d175 functional-tester/tester: use "clientv3" for key stresser
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 13:23:04 -07:00
Gyuho Lee
7cc0d689b8 functional-tester/tester: use clientv3.Client for consistency checks
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 12:57:26 -07:00
Gyuho Lee
5423100def functional-tester: add "Member.Compact" method
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 12:45:19 -07:00
Gyuho Lee
11818b5f40 etcdserverpb: document "Hash" and "HashKV" more clearly
Explain where the computation happens (e.g. "Hash" for all buckets
and "HashKV" for "key" bucket).

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 11:50:20 -07:00
Gyuho Lee
a729b88463 functional-tester/rpcpb: support grpc.DialOption for "CreateEtcdClient"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 11:40:36 -07:00
Gyuho Lee
358a89c7e9 functional-tester/tester: provide correct latency information to failure
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 11:21:19 -07:00
Gyuho Lee
f25188d35b Merge pull request #9523 from gyuho/fff
functional-tester/tester: use "*rpcpb.Member" directly to dial
2018-04-03 11:12:37 -07:00
Gyuho Lee
d45c3f172b functional-tester/tester: fix cluster_test
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 11:12:12 -07:00
Gyuho Lee
629e5a0e7a functional-tester/tester: use "*rpcpb.Member" directly
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 11:02:00 -07:00
Gyuho Lee
b55a5a9771 functional-tester/rpcpb: support extra dial options
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 10:55:47 -07:00
Gyuho Lee
c2731cde54 functional-tester/agent: rename "logger" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 09:56:46 -07:00
Gyuho Lee
eb0c66f912 functional-tester/tester: rename logger field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 09:56:42 -07:00
Gyuho Lee
c9161b1f5c functional-tester/agent: fix govet shadow in Go tip
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-03 06:36:08 -07:00
Vincent Lee
f0dffb4163 raft: Propose in raft node wait the proposal result so we can fail fast while dropping proposal. 2018-04-03 11:04:09 +08:00
Gyuho Lee
9c62d7b2d1 leaes: remove unnecessary O(log N) operation when nothing is expiry
Since heap is already sorted, we can just check first element
to see if anything is expiry, rather than popping and pushing
it back. If nothing is expiry, pop operation is unnecessary.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 16:34:34 -07:00
Gyuho Lee
a6984c53de lease: add "expireExists"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 16:34:34 -07:00
Gyuho Lee
f9b7a012b5 lease: add "TestLeaseQueue"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 16:34:30 -07:00
Gyuho Lee
51b8d68a7f lease: godoc "LeaseWithTime", change field name to "id"
No need to have "lease" in field name.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 14:58:34 -07:00
Gyuho Lee
2aa3decc38 Merge pull request #9418 from mgates/use_heap_to_track_lease_expirations
lease: Add a heap to optimize lease expiration checks
2018-04-02 14:45:49 -07:00
Gyuho Lee
e001ecb48d Merge pull request #9518 from gyuho/eee
pkg/transport: log cert file not found in server-side
2018-04-02 14:45:27 -07:00
Gyuho Lee
021df6a827 etcdctl/ctlv3: set client-side logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 13:51:22 -07:00
Gyuho Lee
faeffff5b5 CHANGELOG-3.4: highlight TLS error logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 13:46:25 -07:00
Gyuho Lee
d5bcf66b6b etcdmain: pass logger to "transport.SelfCert"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 13:42:17 -07:00
Gyuho Lee
a173e761bb embed: support logger for TLS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 13:42:13 -07:00
Gyuho Lee
322437f47d pkg/transport: log tlsutil.NewCert errors
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 13:42:09 -07:00
Gyuho Lee
472f309411 lease: fix gofmt
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 13:00:33 -07:00
Gyuho Lee
139202e7d8 CHANGELOG: update
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:56:27 -07:00
micah
3f85ae70e0 lease: add lease benchmarks 2018-04-02 11:52:58 -07:00
micah
6f271d8bf1 lease: Add a heap to optimize lease expiration checks
This adds a heap acting as a priority queue to keep track of lease
exiprations. Previously the whole lease map had to be iterated through
each time.

The queue allows us to check only those leases which might be expired.
When the expiration changes, we add an additional entry. If we check an
entry that isn't expired, it means that the lease got extended.
If we find a entry in the heap that doesn't have a corresponding entry in
the map, we know that the lease has already been expired or revoked.
2018-04-02 11:52:55 -07:00
Gyuho Lee
42d157fea9 Merge pull request #9517 from gyuho/fff
functional-tester: differentiate follower/leader injection
2018-04-02 11:45:35 -07:00
Gyuho Lee
173fdc37a3 test: run shellcheck only on bash scripts
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:45:04 -07:00
Gyuho Lee
6f2adc8a3d scripts: add dev scripts
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:27:39 -07:00
Gyuho Lee
828a0246a6 Makefile: update/move
This is being used for all docker tests.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:27:26 -07:00
Gyuho Lee
64c9caa76b etcd-test-proxy: update README
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:03:08 -07:00
Gyuho Lee
8f1d83cd89 functional-tester: update README
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:02:44 -07:00
Gyuho Lee
5973e5b467 tester: clean up, differentiate follower/leader injection
Rather than injecting to random members.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 11:00:24 -07:00
Gyuho Lee
ded355abd9 functional-tester/rpcpb: fix failure name enum
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 10:45:34 -07:00
Gyuho Lee
a9a10089bf Merge pull request #9514 from ppggff/master
Explanation of configuration flag '--auto-compaction-mode' is rendered as table in coreos.com
2018-04-02 09:57:19 -07:00
Gyuho Lee
007cdd00ed Merge pull request #9515 from gyuho/ftest
functional-tester: randomize failure injection sequence (by default)
2018-04-02 09:39:50 -07:00
Gyuho Lee
94a96e59e0 functional-tester: improve logging, remove "round" parameter from
"Failure"

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 09:37:50 -07:00
Gyuho Lee
3ced4443ba functional-tester/tester: add "failureStrings"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 09:31:31 -07:00
Gyuho Lee
7791b06cdf functional-tester/tester: fix YAML field name
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 09:28:46 -07:00
Gyuho Lee
38d315fecf functional-tester/rpcpb: update YAML field name to "etcd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-02 09:28:22 -07:00
Gyuho Lee
ee66a8087b functional-tester/agent: improve logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-01 02:57:47 -07:00
Gyuho Lee
3fe077746f functional-tester/cmd/etcd-tester: add wait health logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-01 02:33:10 -07:00
Gyuho Lee
e552607a04 functional-tester/tester: clean up logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-04-01 02:33:06 -07:00
Gyuho Lee
6d8d8a6dcb functional-tester/tester: test shuffled cases are equal when sorted
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 18:43:24 -07:00
Gyuho Lee
9e28331961 functional-tester/agent: remove invalid operation checks
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 18:38:29 -07:00
Gyuho Lee
2b9c810fa4 functional-tester/tester: shuffle failure cases with coprime
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 18:35:06 -07:00
Gyuho Lee
ffabe55a25 functional-tester/tester: clean up stress, fix stress closing
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 18:15:40 -07:00
Gyuho Lee
8dbe491f1a functional-tester/rpcpb: add "failure-shuffle"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 17:49:26 -07:00
Gyuho Lee
e9d151d76c functional-tester/tester: update import paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 17:47:47 -07:00
Gyuho Lee
3f390622f7 functional-tester/agent: stop proxy on "fail archive"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-31 17:47:23 -07:00
ppggff
045dab52ad Documentation/op-guide: explanation of configuration flag '--auto-compaction-mode' is rendered as table in coreos.com 2018-03-31 11:14:04 +08:00
Gyuho Lee
bf052ef491 semaphore.sh: run release tests with latest 3.3
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 16:14:31 -07:00
Gyuho Lee
93fec5ef54 Merge pull request #9513 from gyuho/functional-tester
functional-tester: refactor agent/tester
2018-03-30 16:06:11 -07:00
Gyuho Lee
048a1b14d5 test: bump up default timeout for now
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 14:42:45 -07:00
Gyuho Lee
bf3994d3f0 functional-tester/agent: fix shadowed err var
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 12:30:48 -07:00
Gyuho Lee
9811451604 build: fix "compile_pass"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 12:27:17 -07:00
Gyuho Lee
c483c050cf bill-of-materials.json: update
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 12:07:36 -07:00
Gyuho Lee
194cdede89 functional-tester/cmd/etcd-tester: check error from "Bootstrap"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 12:01:27 -07:00
Gyuho Lee
c1a8c73f9a functional-tester/tester: add missing "newNoChecker"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:54:32 -07:00
Gyuho Lee
ae56cf014d functional-tester/rpcpb: simplify "return err"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:46:03 -07:00
Gyuho Lee
d5a46abdb5 functional-tester/tester: fix goword errors
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:40:13 -07:00
Gyuho Lee
0a0a7d007c Dockerfile-functional-tester: copy "local-test.yaml"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:37 -07:00
Gyuho Lee
bb73145565 functional-tester: update local test scripts with docker
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:33 -07:00
Gyuho Lee
07ca694947 functional-tester: update README
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:24 -07:00
Gyuho Lee
617069dc99 hack/scripts-dev/Makefile: fix functional-tester build paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:24 -07:00
Gyuho Lee
a77ae6df00 tools/etcd-test-proxy: fix logger
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:24 -07:00
Gyuho Lee
5a5ac3a721 Dockerfile-functional-tester: update build paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:24 -07:00
Gyuho Lee
28766fb002 test: run test script with new "functional-tester"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
d44332daa9 proxy: clean up logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
e170d40f90 functional-tester: move "etcd-runner" to "./cmd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
586a253943 functional-tester: update build paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
0e7f48b375 functional-tester/etcd-tester: remove
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
f7eab57b3c functional-tester/etcd-agent: remove
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
3fba5ab403 vendor: add "go.uber.org/zap"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
408a6c763b functional-tester/cmd/etcd-tester: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
cbfba6db76 functional-tester/cmd/etcd-agent: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:23 -07:00
Gyuho Lee
2bc666292e functional-tester/tester: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-30 11:25:19 -07:00
Gyuho Lee
ca54bc22c7 functional-tester/agent: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 20:36:46 -07:00
Gyuho Lee
1f77a6a9c0 functional-tester/rpcpb: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 20:36:46 -07:00
Gyuho Lee
3a8a150b0f functional-tester/scripts/genproto: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 11:31:55 -07:00
Joe Betz
8767e39bec Merge pull request #9510 from jpbetz/changelog-2018-03-29
CHANGELOG: add 3.1.13 and 3.2.18 release dates.
2018-03-29 11:14:16 -07:00
Joe Betz
84be43855e CHANGELOG: add 3.1.13 and 3.2.18 release dates. 2018-03-29 10:59:34 -07:00
Gyuho Lee
c35cd03a66 semaphore: update Go version, release test version
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 09:21:03 -07:00
Gyuho Lee
7fd8db98d2 CHANGELOG-3.3: update 3.3.3 release date
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 09:08:24 -07:00
Gyuho Lee
365faaf4d3 CHANGELOG: update Go version in v3.3.3
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 09:06:27 -07:00
Gyuho Lee
3f1a551f6b hack/scripts-dev: update Makefile go version
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 09:00:58 -07:00
Gyuho Lee
971ed2f5e2 travis: upgrade Go version to 1.10.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-29 09:00:20 -07:00
Gyuho Lee
296c538a80 Merge pull request #9505 from kchristidis/fix-rafttest
raft: fix failing tests in rafttest
2018-03-28 12:41:55 -07:00
Kostas Christidis
438163feb4 raft: fix failing tests in rafttest
Tests in `rafttest` would fail because they referred to field `Id` instead of
`ID`. This PR fixes that.

Closes #9504.

Signed-off-by: Kostas Christidis <kostas@christidis.io>
2018-03-28 15:12:29 -04:00
Gyuho Lee
053bab06db Merge pull request #9497 from gyuho/cmux
vendor: upgrade "soheilhy/cmux" to "v0.1.4"
2018-03-28 09:09:36 -07:00
Gyuho Lee
9377e5169b CHANGELOG-3.4: highlight "soheilhy/cmux" dependency upgrade
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 21:58:55 -07:00
Gyuho Lee
f54ede4723 vendor: upgrade "soheilhy/cmux" to "v0.1.4"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 21:46:40 -07:00
Gyuho Lee
f5c56401d7 scripts/update-clientv2: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 10:33:27 -07:00
Gyuho Lee
583fda7240 CHANGELOG-4.0: deprecate "etcdctl backup" command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 09:53:51 -07:00
Gyuho Lee
8036a818d5 CHANGELOG-4.0: deprecate v2 proxy
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 09:18:58 -07:00
Gyuho Lee
473793be1f Merge pull request #9490 from gyuho/cors
*: support CORS for v3 HTTP requests
2018-03-27 09:04:26 -07:00
Gyuho Lee
57f036d617 etcdmain: update "help" page
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 09:00:13 -07:00
Gyuho Lee
feb88ec66b embed: update "HostWhitelist" godoc
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
089e8ffecb pkg/flags: fix "Set"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
3b1eaaee6e etcdmain: fix "validateClusteringFlags"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
9c38c43796 CHANGELOG-3.4: add "CORS" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
a066b03c2c embed: clean up CORS, HostWhitelist logging
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
27ed129f44 etcdmain: update "CORS", "HostWhitelist" flag parsing
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
9ea8be0c2b embed: support "CORS" handler in v3 HTTP requests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
c7cecca575 embed: rename "Config.CorsInfo" to "Config.CORS"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
c841de1f62 etcdserver: add "CORS" field to "ServerConfig"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
29db853317 etcdserver: replace "hostWhitelist" with "AccessController"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
35509bf69c etcdmain: default "--host-whitelist '*'"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
7195bb7ced pkg/cors: remove
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
df6cd22d59 embed: update "CorsInfo" field to "map[string]struct{}"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
35b01b982c etcdmain: use NewUniqueURLsWithExceptions
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
b426217907 pkg/flags: add "UniqueURLs", "UniqueStrings"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>

iii

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-27 06:25:44 -07:00
Gyuho Lee
2b7783028f Merge pull request #9491 from jiaxuanzhou/clientv3
clientv3: optimize func NewFromURL
2018-03-27 04:31:31 -07:00
jiaxuanzhou
ad448fb280 clientv3: keep NewFromURL the same, add method NewFromURLs 2018-03-27 10:40:10 +08:00
jiaxuanzhou
e1bf612ee8 clientv3: optimize func NewFromURL 2018-03-27 09:30:12 +08:00
Gyuho Lee
2e1e619cc0 Merge pull request #9486 from gyuho/ddd
Documentation: highlight v3 post migration
2018-03-26 05:53:26 -07:00
Gyuho Lee
7563bec19f CHANGELOG: update compactor links, 4.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-26 05:51:05 -07:00
Gyuho Lee
c2a63478a6 Merge pull request #9485 from gyuho/compactor
compactor: adjust interval for period <1-hour
2018-03-26 05:34:43 -07:00
Gyuho Lee
a994fdedb3 Merge pull request #9450 from hexfusion/gw_naming
etcdserver: improve Lease http path naming for gRPC gateway
2018-03-26 00:06:50 -07:00
Gyuho Lee
fc53917302 Merge pull request #9487 from cceckman/patch-1
Documentation: Clarify revisions vs. versions in data model doc
2018-03-26 00:06:35 -07:00
Charles Eckman
72500fe34f Documentation: Clarify revisions vs. versions
This confused me just looking at the protos; reading up on coreos/etcd#6518 helped clarify things. I highlighted the terms that show up as fields in protos and tried to clean up some of the language.
2018-03-24 16:34:48 -07:00
Gyuho Lee
868558ce85 compactor: simplify interval logic on periodic compactor
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-24 07:33:19 -07:00
Gyuho Lee
977e690caa Documentation: highlight v3 post migration
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-23 19:54:09 -07:00
Gyuho Lee
9af05a45d4 etcdserver: move "unsafe" flags to bottom
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-23 19:44:24 -07:00
Gyuho Lee
cfd8b3e86d embed: move "unsafe" flags to bottom
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-23 19:44:24 -07:00
Gyuho Lee
940200f1ae etcdmain: move "unsafe" flags to bottom
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-23 19:44:24 -07:00
Iwasaki Yudai
501c80fbbc compactor: adjust interval for period <1-hour 2018-03-23 10:11:59 -07:00
Gyuho Lee
f6f43ee799 Documentation/op-guide: document compactor change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 13:48:23 -07:00
Gyuho Lee
d1be316b51 CHANGELOG: add compactor changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 13:48:08 -07:00
Gyuho Lee
34241efb11 CHANGELOG-3.1: highlight Read Index change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 11:43:35 -07:00
Gyuho Lee
118e64ef4c Merge pull request #9479 from gyuho/fedora
*: clean up Makefile, update base image
2018-03-22 11:42:14 -07:00
Gyuho Lee
be50343652 words: whitelist more words
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 11:01:26 -07:00
Gyuho Lee
f6c9f767e5 Dockerfile-test: install "netcat"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 10:48:17 -07:00
Gyuho Lee
906a40bced scripts/genproto: fix shellcheck
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 10:39:31 -07:00
Gyuho Lee
9c995fab9b test: fix shellcheck
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 10:39:23 -07:00
Sam Batschelet
cd92d4a987 etcdserver: improve Lease http path naming for gRPC gateway with additional_bindings. 2018-03-22 07:38:03 -04:00
Gyuho Lee
a2a22a6506 Dockerfile-test: use "fedora" as base image
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 02:40:28 -07:00
Gyuho Lee
dcc2b9cfda hack/scripts/Makefile: fix docker commands
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-22 02:05:48 -07:00
Sam Batschelet
31de8345f9 Merge pull request #9460 from hexfusion/e2e_watch_tests
e2e: add gRPC gateway Lease tests
2018-03-21 22:34:34 -04:00
Gyuho Lee
d8ed7a7ba3 Merge pull request #9476 from gyuho/ccc
compactor: clean up
2018-03-21 18:48:25 -07:00
Sam Batschelet
8dab18aca4 e2e: add gRPC gateway Lease tests 2018-03-21 21:13:13 -04:00
Gyuho Lee
7ce69b256a compactor: clean up
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-21 17:14:50 -07:00
Gyuho Lee
f7714e269e CHANGELOG-3.1: add metrics fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-21 13:36:35 -07:00
Gyuho Lee
334e274f70 Merge pull request #9473 from gyuho/deprecate-policy
*: document deprecate policy in CHANGELOG-4.0
2018-03-21 09:24:31 -07:00
Gyuho Lee
ef715d823a *: document deprecate policy in CHANGELOG-4.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-21 09:23:36 -07:00
Gyuho Lee
5abbea8d98 Merge pull request #9470 from gyuho/deprecated
*: document deprecated ca-file flags (since v2.1)
2018-03-20 17:47:07 -07:00
Gyuho Lee
da1d3e6a78 Merge pull request #9468 from gyuho/compactor-doc
*: document auto-compaction logic
2018-03-20 17:36:09 -07:00
Gyuho Lee
e9e90bd30f Documentation/op-guide: explain auto-compaction logic
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 16:14:51 -07:00
Gyuho Lee
da0e154ae6 CHANGELOG: add auto-compaction changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 16:14:51 -07:00
Gyuho Lee
fa5f768236 e2e: drop "ca-file" flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 16:08:33 -07:00
Gyuho Lee
4f1cf30c7d etcdmain: use "TrustedCAFile" in grpc_proxy
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:48:44 -07:00
Gyuho Lee
140dd1064f Documentation/upgrades: highligh "ca-file" changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:48:44 -07:00
Gyuho Lee
f0a08f71db CHANGELOG-3.4: highlight "ca-file", "peer-ca-file" flag deprecation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:48:41 -07:00
Gyuho Lee
ad8c326599 clientv3/yaml: deprecate CAFile field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:38:08 -07:00
Gyuho Lee
759fcb6e70 pkg/transport: deprecate "CAFile" field
Has been deprecated since v2.1...

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:38:05 -07:00
Gyuho Lee
c524ebe6fd embed: deprecate "CAFile" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:36:47 -07:00
Gyuho Lee
82ef3f83f6 etcdmain: deprecate 'ca-file' and 'peer-ca-file' flags
Has been deprecated since 2.1...

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:31:32 -07:00
Gyuho Lee
9bd580f2fc tools/benchmark: use "TrustedCAFile"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:31:32 -07:00
Gyuho Lee
aece63b10e etcdctl: use "TrustedCAFile"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:31:32 -07:00
Gyuho Lee
706c760a3d etcdmain: remove deprecated flags from "etcd --help"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:31:32 -07:00
Gyuho Lee
f1427b336e Documentation/upgrades: add upgrade v3.4
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 15:31:32 -07:00
Gyuho Lee
6153e9fd1d Merge pull request #9469 from gyuho/snapshot-count
*: document v3.2 default snapshot-count value change
2018-03-20 15:31:02 -07:00
Gyuho Lee
af20c3969b *: document v3.2 default snapshot-count value change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-20 14:49:40 -07:00
Gyuho Lee
d2bbedf215 Merge pull request #9466 from mkumatag/update-baseimage
Change baseimage for ppc64le dockerfile
2018-03-20 02:24:09 -07:00
Hitoshi Mitake
b0ed5c1dd8 Merge pull request #8680 from mitake/auth-cleanup
*: don't use a string literal directly in grpc metadata
2018-03-20 18:19:23 +09:00
Manjunath A Kumatagi
30ec8cec23 build-docker: Change baseimage for ppc64le dockerfile 2018-03-20 04:34:46 -04:00
Gyuho Lee
56d1a45bbc Merge pull request #9462 from gyuho/balancer-clean-up
clientv3: move health balancer to "balancer"
2018-03-19 16:01:53 -07:00
Gyuho Lee
3aa5711dca clientv3: move health balancer to "balancer"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-19 15:16:11 -07:00
Gyuho Lee
dea71f32f6 Merge pull request #9458 from gyuho/pre-vote
functional-tester: test pre-vote in functional-tester
2018-03-19 09:26:17 -07:00
Gyuho Lee
04ba007429 Merge pull request #9461 from hexfusion/fx_ct
e2e: remove duplicate error check
2018-03-19 07:30:38 -07:00
Gyuho Lee
813c9aa450 functional-tester: enable "--pre-vote"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-19 07:18:57 -07:00
Gyuho Lee
a66e657cac *: update "pre-vote" flag
Disabled by default, anyway.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-19 07:18:57 -07:00
Gyuho Lee
69eab45880 Merge pull request #9457 from gyuho/fff
pkg/flags: clean up, add "SelectiveStringsValue"
2018-03-19 07:17:11 -07:00
Sam Batschelet
e8d58430a6 e2e: remove duplicate error check 2018-03-19 09:38:18 -04:00
Gyuho Lee
6bf273b883 Merge pull request #9452 from rhcarvalho/patch-1
runtime-reconf-design.md: improve documentation
2018-03-19 02:24:53 -07:00
Gyuho Lee
1640cdb044 pkg/flags: clean up, add "SelectiveStringsValue"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-19 02:23:06 -07:00
Xiang Li
f10cf6be5a Merge pull request #9454 from shsjshentao/tuningPort
Documentation: 2379 port mistake
2018-03-19 14:43:35 +08:00
Blade
b2f28ee234 Documentation: 2379 port mistake 2018-03-19 13:37:14 +08:00
Rodolfo Carvalho
bc3a8f0efe runtime-reconf-design.md: improve documentation
Fix typos and add articles to improve the experience of people reading the docs.
2018-03-18 17:13:51 -07:00
Gyuho Lee
cfac50cb53 Merge pull request #9449 from gyuho/ccc
v3rpc: clean up "maintenanceServer.Status" call
2018-03-17 15:06:45 -07:00
Gyuho Lee
4cb0d167d6 v3rpc: clean up "maintenanceServer.Status" call
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-17 02:41:54 -07:00
Gyuho Lee
c22afc2d71 CHANGELOG: add Go versions, add security change details
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-17 01:57:20 -07:00
Gyuho Lee
c5942972f7 build: fix GO_LDFLAGS (wrong 'internal' path)
GIT_SHA wasn't updated (internal path was wrong)

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-17 00:35:31 -07:00
Gyuho Lee
576a2ca501 Merge pull request #9446 from gyuho/ttt
mvcc/backend: defrag to block concurrent read requests while resetting tx
2018-03-16 12:48:48 -07:00
Gyuho Lee
6c40b2b5d4 mvcc/backend: defrag to block concurrent read requests while resetting tx
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-16 03:29:18 -04:00
Gyuho Lee
5076497e6c CHANGELOG: add "metrics" fix changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 21:21:23 -04:00
Gyuho Lee
c8cfdb3b55 Merge pull request #9445 from gyuho/raft-index
*: clean up etcdserver raft handler, fix "endpoint status" Raft index field
2018-03-15 20:50:37 -04:00
Gyuho Lee
14558027bc *: fix "raftIndex" comment as "committed index"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 19:40:12 -04:00
Gyuho Lee
509cf414f7 etcdserver: remove duplicate "setAppliedIndex" calls
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 19:35:44 -04:00
Gyuho Lee
4f754c1850 etcdserver: clean up with "RaftStatusGetter"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 19:30:08 -04:00
Gyuho Lee
46f346f87a Merge pull request #9442 from gyuho/urls
etcdmain: remove "listen-metrics-urls" manual parsing
2018-03-15 08:23:32 -04:00
Gyuho Lee
bec3d975e0 etcdmain: handle JSON "listen-metrics-urls"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 01:24:53 -04:00
Gyuho Lee
4419661fb1 etcdmain: remove "listen-metrics-urls" manual parsing
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 01:23:33 -04:00
Gyuho Lee
1e94968ffa pkg/flags: support empty URLs string in NewURLsValue
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-15 01:18:57 -04:00
Hitoshi Mitake
b1dd19a7aa *: don't use string literals directly in grpc metadata
Current etcd code uses the string literals ("token", "authorization")
as field names of grpc and swappger metadata for passing token. It is
difficult to maintain so this commit introduces new constants for the
purpose.
2018-03-15 14:17:34 +09:00
Gyuho Lee
15926e029c Merge pull request #9441 from gyuho/strings
*: replace "--host-whitelist" with "flags.StringSlice"
2018-03-14 23:26:43 -04:00
Hitoshi Mitake
718d0d045c Merge pull request #9433 from mitake/proto-types
*: unify type of key and rangeEnd in AuthRoleRevokePermissionRequest
2018-03-15 11:28:43 +09:00
Gyuho Lee
79d3c93568 etcdmain: replace "--host-whitelist" with "flags.StringSlice"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-14 21:38:20 -04:00
Gyuho Lee
5e9d4652e0 pkg/flags: add "StringSliceFromFlag"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-14 21:32:24 -04:00
Gyuho Lee
9e7ef79c26 pkg/flags: add "StringSlice"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-14 21:27:17 -04:00
Gyuho Lee
b5bd614a4b Merge pull request #9439 from huikang/doc-improve-api-guarantee
Documentation: make the API guarantee example explicit
2018-03-14 17:37:41 -04:00
Hui Kang
f85c3b654a Documentation: make the API guarantee example explicit
Signed-off-by: Hui Kang <kangh@us.ibm.com>
2018-03-14 17:25:27 -04:00
Gyuho Lee
a54063716f Merge pull request #9437 from gyuho/mmm
rafthttp: add missing "peer_sent_failures_total" metrics call
2018-03-14 12:43:52 -04:00
Gyuho Lee
6ef2b7bcee rafthttp: add missing "peer_sent_failures_total" metrics call
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-14 12:43:25 -04:00
Gyuho Lee
892939f82f Merge pull request #9410 from laggyluke/grafana-label-matcher
Documentation/op-guide: add job="etcd" label matcher to Grafana dashboard
2018-03-14 08:22:59 -04:00
Hitoshi Mitake
752963beea *: unify type of key and rangeEnd in AuthRoleRevokePermissionRequest
Fix https://github.com/coreos/etcd/issues/9424
2018-03-14 14:38:20 +09:00
Gyuho Lee
c5417939b6 Merge pull request #9426 from wenjiaswe/testscript
scripts: add TESTCASE flag to run single unit test
2018-03-14 00:13:40 -04:00
Wenjia Zhang
3571f406aa scripts: add TESTCASE flag to run single unit test
Enable user to run specified test case with different TIMEOUT expectation
when needed.
2018-03-13 13:54:20 -07:00
Gyuho Lee
3e668a9e97 Merge pull request #9414 from jpbetz/changelog-3.1.13-3.2.18
CHANGELOG: set dates for 3.1.12 & 3.2.17 release
2018-03-13 16:14:22 -04:00
Joe Betz
4017ecaf0f CHANGELOG: set dates for 3.1.12 & 3.2.17 releases, add notes for next releases 2018-03-13 16:12:59 -04:00
Gyuho Lee
4408ecede8 CHANGELOG-3.4: update "prevent disruptive rejoining"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-10 20:15:11 -08:00
Gyuho Lee
249b7a1411 Merge pull request #9415 from gyuho/adjust-advancing-ticks
etcdserver: adjust election timeout on restart
2018-03-10 20:04:58 -08:00
Gyuho Lee
9680b8a157 etcdserver: adjust election ticks on restart
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-10 19:09:38 -08:00
Gyuho Lee
edec229e10 etcdserver: make "advanceTicks" method
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-10 18:50:50 -08:00
Gyuho Lee
29d9543850 rafthttp: add "ActivePeers" to "Transport"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-10 18:50:47 -08:00
Gyuho Lee
9e84f2d4e8 CHANGELOG-3.2: highlight --snapshot-count default value change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-09 15:51:35 -08:00
Sam Batschelet
7e14e11548 Merge pull request #9408 from qinix/fix-proto-code-style
etcdserverpb: fix protobuf code style
2018-03-09 08:34:15 -05:00
Eric Zhang
67c66884e3 etcdserverpb: fix protobuf code style 2018-03-09 14:20:52 +08:00
Gyuho Lee
00b84235df CHANGELOG-3.3: update dates, add 3.3.3
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-08 12:59:40 -08:00
Gyuho Lee
5132017b36 CHANGELOG: update
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-08 11:06:10 -08:00
Gyuho Lee
e280f8c3da clientv3/integration: adjust timeouts for TestLeasingReconnectOwnerRevoke
Now Restart takes longer, and leasing Get blocks
on server restarts anyway, so fix CI failures in
slow machines.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-08 10:58:18 -08:00
Gyuho Lee
6fd4138c11 Merge pull request #9399 from yudai/maxleasettl
*: enforce max lease TTL with 9,000,000,000 seconds
2018-03-08 10:57:09 -08:00
Gyuho Lee
83a9684c4e CHANGELOG: add "lease overflow check"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-08 10:29:30 -08:00
Gyuho Lee
3e69dc5a7c clientv3/integration: test "rpctypes.ErrLeaseTTLTooLarge"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-08 10:19:30 -08:00
Iwasaki Yudai
db21941d1d *: enforce max lease TTL with 9,000,000,000 seconds
math.MaxInt64 / time.Second is 9,223,372,036. 9,000,000,000 is easier to
remember/document.
2018-03-08 10:17:12 -08:00
George Miroshnykov
808450129b Documentation/op-guide: add job="etcd" label matcher to Grafana dashboard
Prometheus that scrapes etcd might also scrape other things, so we should
specifically ask for etcd metrics, especially when dealing with generic
metrics like `process_resident_memory_bytes`.
2018-03-08 15:04:54 +01:00
Gyuho Lee
4704232cb6 *: remove unused env vars
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-08 01:35:10 -08:00
Gyuho Lee
a39273f26e Merge pull request #9402 from jpbetz/3.1.12-changelog
CHANGELOG: etcd 3.1.12 backports
2018-03-08 00:59:49 -08:00
Joe Betz
2b123f6609 CHANGELOG: etcd 3.1.12 backports 2018-03-07 22:50:11 -08:00
Gyuho Lee
bb60342cec hack/scripts-dev: fix indentation in run.sh
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 14:30:49 -08:00
Gyuho Lee
b6526b9d42 hack/scripts-dev: add more docker commands
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 14:11:17 -08:00
Gyuho Lee
2f2c6cb13b Merge pull request #9397 from gyuho/vvv
*: regenerate vendor directory, document updatedep.sh
2018-03-07 14:00:37 -08:00
Gyuho Lee
8b6ee6aea9 hack/scripts: update comments on "build-docker-release-master"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 13:54:59 -08:00
Gyuho Lee
27f0aa9cf0 scripts: document "updatedep.sh" script
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 13:54:56 -08:00
Gyuho Lee
d598af104d vendor: regenerate with latest "dep"
Better pruning

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 13:34:21 -08:00
Gyuho Lee
ab4d888e1f pkg/logutil: fix example
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 13:11:34 -08:00
Gyuho Lee
2a5911f98d Merge pull request #9396 from gyuho/lll
*: replace "pkg/logger" with "pkg/logutil"
2018-03-07 10:57:37 -08:00
Gyuho Lee
4e0c00244d *: remove "pkg/logger", replace with "pkg/logutil"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 10:49:25 -08:00
Gyuho Lee
82ee796aa4 pkg/logutil: move "pkg/logger" to "logutil"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-07 10:45:29 -08:00
Gyuho Lee
89292affaa Merge pull request #9352 from gyuho/raft-pre-vote
*: configure Raft Pre-Vote to reduce disruptive rejoining servers
2018-03-07 10:15:26 -08:00
Sam Batschelet
abedaa31e1 Merge pull request #9394 from jeis2497052/master
*: fix typos in markdown docs
2018-03-07 12:03:10 -05:00
John Eismeier
ca47aab373 *: fix typos in markdown docs 2018-03-07 10:32:07 -05:00
Gyuho Lee
b48d3eb380 etcdmain: add "--experimental-pre-vote" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-06 09:56:32 -08:00
Gyuho Lee
3092d3bf7f embed: add "ExperimentalPreVote" for Raft
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-06 09:56:19 -08:00
Gyuho Lee
78918848bd etcdserver: support Raft Pre-Vote
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-06 09:55:55 -08:00
Gyuho Lee
8aae8c1c9c raft: document disruptive rejoining server, add tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-06 09:54:29 -08:00
Gyuho Lee
211523fc88 Merge pull request #9390 from gyuho/ddd
*: add "--cluster" flag to defrag, highlight defrag endpoints
2018-03-05 12:36:27 -08:00
Gyuho Lee
62d8e36462 Merge pull request #9389 from spzala/checkdatascaledoc
etcdctl/doc: create doc for check datascale
2018-03-05 11:08:25 -08:00
Gyuho Lee
6affd6a599 CHANGELOG-3.4: fix typo in gRPC gateway change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-05 11:06:34 -08:00
Gyuho Lee
63ab908206 CHANGELOG-3.4: add JWT ttl field, defrag --cluster changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-05 11:04:41 -08:00
Gyuho Lee
9919e4d391 Documentation/op-guide: highlight defrag operation "--cluster" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-05 10:54:45 -08:00
Gyuho Lee
3451905d3e etcdctl: highlight "defrag" command caveats
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-05 10:52:59 -08:00
Gyuho Lee
912c402188 etcdctl/ctlv3: add "--cluster" flag to "defrag" command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-05 10:46:37 -08:00
Gyuho Lee
55a7b30377 Merge pull request #9385 from Revolution1/fix-typos-of-word-trevisions
trevisions -> revisions
2018-03-05 10:28:16 -08:00
Gyuho Lee
0a33308b8a Merge pull request #9387 from spzala/updatecheckperfdoc
etcdctl/doc: document check perf auto-compact and defrag options
2018-03-05 10:27:47 -08:00
Sahdev P. Zala
0adee36cc6 etcdctl/doc: create doc for check datascale
Create documentation for check datascale.

Fixes #9327
2018-03-05 13:27:30 -05:00
Sahdev P. Zala
349773c832 etcdctl/doc: document check perf auto-compact and defrag options
Create doc for newly created auto-compact and defrag options in
check perf command.
2018-03-05 12:07:59 -05:00
revol.cai
3534df14b4 Documentation: trevisions -> revisions 2018-03-05 20:14:37 +08:00
Gyuho Lee
064aeb258b Merge pull request #9382 from gyuho/flag
pkg/flags: fatal on conflicting environment variable
2018-03-02 11:29:13 -08:00
Gyuho Lee
748ab8c398 pkg/flags: fatal on conflicting environment variable
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-02 10:36:59 -08:00
Gyuho Lee
dbdab24d23 Merge pull request #9383 from gyuho/change
CHANGELOG: clean up, add auth/flag changes
2018-03-02 10:32:41 -08:00
Gyuho Lee
3f3425ab8b CHANGELOG: clean up, add auth/flag changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-02 10:30:42 -08:00
Gyuho Lee
0a972daac7 Merge pull request #9379 from gyuho/fix-election
*: fix server panic on invalid Election Proclaim/Resign HTTP requests
2018-03-01 18:21:54 -08:00
Gyuho Lee
2f909a97b5 e2e: add "Election" grpc-gateway test cases
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-01 17:08:25 -08:00
Gyuho Lee
b62e8291c2 e2e: add "spawnWithExpectLines"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-01 16:16:51 -08:00
Gyuho Lee
85533a6305 api/v3election: error on missing "leader" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-01 16:16:45 -08:00
Gyuho Lee
48ff9e64f4 Merge pull request #9380 from gyuho/separate
CHANELOG/hack: add Election HTTP API fix
2018-03-01 15:02:31 -08:00
Gyuho Lee
b8c944ccef CHANGELOG: add Election API fix
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-01 14:55:09 -08:00
Gyuho Lee
637487625d hack/scripts-dev: reproduce election API panic
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-03-01 14:49:59 -08:00
Gyuho Lee
a7e5790c82 Merge pull request #9372 from gyuho/origin
*: mitigate DNS rebinding attacks in insecure etcd server
2018-02-28 20:38:23 -08:00
Gyuho Lee
9f0027dfb2 *: do not whitelist empty hosts
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 19:20:10 -08:00
Gyuho Lee
02217cb6df Documentation/op-guide: document "--host-whitelist"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:54:59 -08:00
Gyuho Lee
d28c0921d3 CHANGELOG: add "--host-whitelist" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:43:49 -08:00
Gyuho Lee
e9969aae7e hack/scripts-dev/docker-dns: add "--host-whitelist" tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:28:12 -08:00
Gyuho Lee
8edaecadc4 embed: enforce client origin policy
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:27:22 -08:00
Gyuho Lee
3648649277 etcdserver: add "HostWhitelist" to "ServerConfig"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:25:28 -08:00
Gyuho Lee
0179d81f22 etcdmain: add "--host-whitelist" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:23:16 -08:00
Gyuho Lee
00c1f16f0a embed: add "HostWhitelist"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 18:20:50 -08:00
Gyuho Lee
418bb92963 pkg/httputil: add "GetHostname"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 17:27:40 -08:00
Gyuho Lee
f0eb772963 auth: add "IsAuthEnabled" method
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 11:16:35 -08:00
Gyuho Lee
9db332c598 hack/scripts-dev: add HTTP requests with DNS
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 11:15:41 -08:00
Gyuho Lee
f6617feb8a embed: rename "httpWrapper"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-28 11:15:10 -08:00
Gyuho Lee
ac50ef0812 Merge pull request #8302 from mitake/token-ttl
auth: a new option for configuring TTL of jwt tokens
2018-02-27 20:50:37 -08:00
Gyuho Lee
fb828d1037 hack/scripts-dev: add "clean-docker" to Makefile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 20:09:33 -08:00
Gyuho Lee
566b3a05dc Merge pull request #9371 from gyuho/mutator
embed: rename "v3alphaMutator" to "v3Mutator"
2018-02-27 14:33:06 -08:00
Gyuho Lee
c4fb5bdd23 embed: rename "v3alphaMutator" to "v3Mutator"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 14:31:32 -08:00
Gyuho Lee
e8a368d4bd Merge pull request #9341 from gyuho/changelog-feb
CHANGELOG: add changes for next patch release
2018-02-27 14:16:42 -08:00
Gyuho Lee
16f5a301a1 CHANGELOG: add changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 12:20:48 -08:00
Gyuho Lee
5b8419e9fa semaphore: update release test version 2018-02-27 11:29:28 -08:00
Gyuho Lee
33949f732e Merge pull request #9370 from gyuho/hack
*: fix Makefile, move GOPATH setup to build script
2018-02-27 11:14:36 -08:00
Gyuho Lee
1da0818186 build: use "bash" syntax, clean up
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 11:07:36 -08:00
Gyuho Lee
d7092b360d hack/scripts-dev: fix "compile-with-docker-test" in Makefile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 11:07:33 -08:00
Gyuho Lee
18f8b1b1e1 build,test: set up GOPATH in build script
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 10:23:14 -08:00
Gyuho Lee
32c46954ee hack/scripts-dev: add "docker-dns-test-insecure-run"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-27 10:12:44 -08:00
Hitoshi Mitake
1caa6afb5f Merge pull request #9369 from mitake/nop-auth-token
auth: a new auth token provider nop
2018-02-27 18:15:37 +09:00
Hitoshi Mitake
2a54e32819 e2e: add a test case of JWT token expiration 2018-02-27 16:29:30 +09:00
Hitoshi Mitake
8fd01f56d6 auth: a new option for configuring TTL of jwt tokens
This commit adds a new option of --auth-token, ttl, for configuring
TTL of jwt tokens. It can be specified like this:
```
--auth-token jwt,pub-key=<pub key path>,priv-key=<priv key path>,sign-method=<sign method>,ttl=5m
```

In the above case, TTL will be 5 minutes.
2018-02-27 16:25:19 +09:00
Hitoshi Mitake
8eb7cfb296 auth: a new auth token provider nop
This commit adds a new auth token provider named nop. The nop provider
refuses every Authenticate() request so CN based authentication can
only be allowed. If the tokenOpts parameter of auth.NewTokenProvider()
is empty, the provider will be used.
2018-02-27 16:21:14 +09:00
Gyuho Lee
23331f7604 Merge pull request #9368 from mkumatag/fix_gopath_var
build: Fix setting gopath
2018-02-26 20:55:42 -08:00
Manjunath A Kumatagi
1ddfade924 build: Fix setting gopath 2018-02-26 23:37:35 -05:00
Gyuho Lee
f802cd9db2 Merge pull request #9366 from gyuho/rafthttp-mu
rafthttp: make "ActiveSince" non-blocking on write lock
2018-02-26 19:19:27 -08:00
Gyuho Lee
e42c2b7bd2 tools/etcd-test-proxy: godoc
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:29:57 -08:00
Gyuho Lee
659224b385 Merge pull request #9229 from ximenzaoshi/lease-fix
lease: Change lease Mutex to RWMutex
2018-02-26 17:21:09 -08:00
Gyuho Lee
5b9741e804 Merge pull request #9274 from gyuho/revert
*: revert "internal" package changes
2018-02-26 17:13:26 -08:00
Gyuho Lee
2dd8af3503 test: fix "internal/store" path
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:12:45 -08:00
Gyuho Lee
811566f2f2 *: fix "v2store" imports
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
33d8126c6b *: regenerate proto
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
d493cd3bbd etcdserver: fix proto import paths
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
69f7e11506 *: move "error" to "etcdserver/v2error"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
b24d81c30d scripts: remove "internal"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
8a518b01c4 *: revert "internal/mvcc" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08: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
0e12e888e0 *: move "internal/store" to "etcdserver/v2store"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
dd2f3b0de8 *: revert "internal/lease" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
bb95d190c1 *: revert "internal/auth" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
0850ccbf45 *: revert "internal/version" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
0e65660548 *: revert "internal/discovery" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
19010a7182 *: revert "internal/alarm" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
6bbe107225 *: revert "internal/compactor" package change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 17:11:40 -08:00
Gyuho Lee
fbe6767570 rafthttp: make "ActiveSince" non-blocking on write lock
"ActiveSince" is read-only, and should be able to call
concurrently, as long as there is no routine holding
write lock (send, send snapshot).

e.g. "ActiveSince" is used around etcd server
"processInternalRaftRequestOnce", should be non-blocking

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 16:47:29 -08:00
Gyuho Lee
d6b46ac969 Merge pull request #9279 from gyuho/force-new-cluster
Documentation/op-guide: discourage "--force-new-cluster" in recovery
2018-02-26 15:52:42 -08:00
Gyuho Lee
01193ce5e4 Merge pull request #9363 from gyuho/build-compile
build: fix compile pass
2018-02-26 12:47:58 -08:00
Gyuho Lee
209c820ffa build: ignore "shellcheck disable=SC2086"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 12:33:29 -08:00
Gyuho Lee
e1001f9349 build: fix compile pass
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 11:37:48 -08:00
Gyuho Lee
04e932ba6f Merge pull request #9347 from gyuho/raft-force-new-cluster
etcdserver: enable "CheckQuorum" when starting with "ForceNewCluster"
2018-02-26 11:28:56 -08:00
Gyuho Lee
53825417d5 Merge pull request #9361 from gyuho/language
Documentation: make "Consul" section more objective
2018-02-26 11:09:11 -08:00
Gyuho Lee
7d7ae8642a Documentation: make "Consul" section more objective
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 10:28:41 -08:00
Gyuho Lee
247473be09 Merge pull request #9362 from gyuho/spell-check
*: fix minor lint warnings
2018-02-26 10:19:17 -08:00
Gyuho Lee
8bf0c43b73 Merge pull request #9267 from gyuho/member-add-test
snapshot: fix "TestSnapshotV3RestoreMultiMemberAdd"
2018-02-26 10:08:49 -08:00
Gyuho Lee
ebfba72715 client: fix "ineffassign" warning
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 10:07:18 -08:00
Gyuho Lee
9c9d846959 clientv3util: fix govet warning
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 10:05:24 -08:00
Gyuho Lee
ab33978646 etcd-tester: fix spell check warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 10:03:54 -08:00
Gyuho Lee
bab0223f04 ctlv3: fix typo in check command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 10:03:43 -08:00
Gyuho Lee
d808b4686c raft: fix typo in raft_test.go
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-26 10:03:25 -08:00
Gyuho Lee
d4aeb3b8cf Merge pull request #9356 from mkumatag/fix_gopath
test, build: Fix gopath creation
2018-02-26 07:38:22 -08:00
Manjunath A Kumatagi
adf4e05079 test, build: Fix gopath creation 2018-02-26 04:21:06 -05:00
Sam Batschelet
3239641a0c Merge pull request #9350 from JulianGindi/grpc-doc-update
documentation: updated grpc documentation
2018-02-25 19:57:14 -05:00
Gyuho Lee
c751fdf5e8 Merge pull request #9351 from spzala/compactdefragdatascal
etcdctl/check: enable auto compact and defrag for check datascale
2018-02-25 11:00:54 -08:00
Gyuho Lee
2dd1a99f42 Merge pull request #9345 from gyuho/raft-step-candidate
raft: clarify candidate message handling, test candidate to follower transition with message from leader
2018-02-25 10:58:05 -08:00
Sahdev P. Zala
fc30b9844a etcdctl/check: enable auto compact and defrag for check datascale
Running check datascale can create large history of keyspaces and
internal fragmentation. Allow user to run auto compact and defrag
when run check datascale.
2018-02-23 18:12:54 -05:00
Julian Gindi
58776fbc10 documentation: updated grpc documentation
I noticed that the docs mention the grpc proxy will listen on port 8080,
but the above example is explicitly telling it to listen on 2379.
Removing confusion.
2018-02-23 13:35:18 -08:00
Gyuho Lee
69357adf33 etcdserver: enable "CheckQuorum" when starting with "ForceNewCluster"
We enable "raft.Config.CheckQuorum" by default in other
Raft initial starts. So should start with "ForceNewCluster".

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-23 00:26:42 -08:00
Gyuho Lee
01db389ea8 raft: document why reuse candidate's term for vote response in stepCandidate
"stepCandidate" should reuse candidate's own term, not term in Message,
because pre-vote is requested with future term.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-21 16:11:01 -08:00
Gyuho Lee
38846c220a raft: use leader's term when candidate becomes follower
`raft.Step` already ensures that when `m.Term > r.Term`,
candidate reverts back to follower with its term being
reset with `m.Term`, thus it's always true that
`m.Term == r.Term` in `stepCandidate`.

This just makes `r.becomeFollower` calls consistent.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-21 16:10:52 -08:00
Gyuho Lee
4fd378ee80 Merge pull request #9343 from gyuho/vvv
*: fix govet -shadow warnings
2018-02-21 10:53:04 -08:00
Gyuho Lee
32ea82cd3f etcd-runner: fix govet -shadow warning
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-21 10:22:12 -08:00
Gyuho Lee
c0910085f5 ctlv2: fix govet -shadow warning
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-21 10:20:54 -08:00
Gyuho Lee
e88bf42966 Merge pull request #9339 from gyuho/fix-embed-auto-compact
embed: fix revision-based compaction with default value
2018-02-21 07:40:35 -08:00
Gyuho Lee
83d1c3d5ec embed: fix revision-based compaction with default value
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-20 17:21:07 -08:00
Gyuho Lee
4aa0320439 embed: document/validate compaction mode
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-20 17:18:48 -08:00
Gyuho Lee
df4aafbbdf Merge pull request #9334 from gyuho/go-1.10
*: upgrade to Go 1.10
2018-02-20 13:22:59 -08:00
Gyuho Lee
089ac72a7c CHANGELOG: add Go 1.10+ for 3.4
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-20 13:21:56 -08:00
Gyuho Lee
e19df692f8 Merge pull request #9185 from spzala/checkdatabase
etcdctl/check: create new check command for memory usage
2018-02-20 11:25:58 -08:00
Gyuho Lee
8b763c64b5 README: require Go 1.10+
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-19 02:27:37 -08:00
Gyuho Lee
ca1885cf1d tools/functional-tester: use Go 1.10
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-19 02:27:37 -08:00
Gyuho Lee
e9b14788cc hack/scripts-dev: use Go 1.10 in Makefile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-19 02:27:37 -08:00
Gyuho Lee
2dd08a08ae semaphore.sh: use Go 1.10
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-19 02:27:37 -08:00
Gyuho Lee
af4e092e32 travis: use Go 1.10
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-19 02:27:37 -08:00
Xiang Li
0b5c660c1d Merge pull request #9336 from rkd-msw/iss_9335_fix
httpproxy: cancel requests when client closes a connection
2018-02-18 12:14:14 -08:00
Rob Day
dfe12ed5c2 httpproxy: cancel requests when client closes a connection 2018-02-18 19:19:44 +00:00
Sahdev P. Zala
53d2a2edfe etcdctl/check: create new check command for memory usage
Create a new command similar to check perf that can check the memory
consumption for putting different workloads on a given endpoint. If no endpoint
is provided, localhost will be used. Return user with a message that whether
there are enough memory for a given workload with pass or fail.

Fixed #9121
2018-02-17 12:01:31 -05:00
Gyuho Lee
b03fd4cbc3 Merge pull request #9330 from gyuho/auto-compact-defrag
ctlv3/command: auto compact and defrag after "check perf"
2018-02-15 14:51:27 -08:00
Gyuho Lee
d1e85570e9 ctlv3/command: auto compact and defrag after "check perf"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-15 14:28:02 -08:00
Gyuho Lee
1e9ba31eb4 Merge pull request #9323 from gyuho/functional-tester-guide
*: clean up functional tester guide with local cluster, docker container
2018-02-14 11:28:47 -08:00
Gyuho Lee
0210d27979 *: remove "./cmd/tools" in build commands
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-14 11:26:38 -08:00
Gyuho Lee
6ae9a7658a tools/functional-tester: clean up Docker scripts
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-14 11:26:32 -08:00
Gyuho Lee
10185b1953 Merge pull request #9322 from gyuho/fix-failpoints
build: fix "gofail" with "mvcc/backend"
2018-02-14 10:57:43 -08:00
Gyuho Lee
2aa960ad43 build: fix "gofail" with "mvcc/backend"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-14 10:54:13 -08:00
Gyuho Lee
e48b585e22 Merge pull request #9321 from hexfusion/v3_r
CHANGELOG: updates from #9298
2018-02-14 09:26:48 -08:00
Sam Batschelet
68c270d9bd CHANGELOG: updates from #9298 2018-02-13 18:37:11 -05:00
Sam Batschelet
fcd71b47d5 Merge pull request #9298 from hexfusion/v3
*: replace grpc-gateway endpoint with /v3
2018-02-13 17:17:57 -05:00
Sam Batschelet
cb5d089d33 Merge pull request #9312 from hexfusion/e2e_w2
e2e: improve Watch test coverage
2018-02-13 17:07:03 -05:00
Gyuho Lee
aab8b5e456 Merge pull request #9319 from gyuho/skip
scripts/genproto: run "protodoc" by default
2018-02-13 13:53:01 -08:00
Gyuho Lee
dac6948774 scripts/genproto: run "protodoc" by default
Do not skip "protodoc" by default.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-13 13:51:13 -08:00
Sam Batschelet
f65f988e0b e2e: improve Watch test coverage 2018-02-12 22:14:56 -05:00
Gyuho Lee
ebd58a0ea3 Merge pull request #9313 from opera443399/fix-etcdctl-README-typo
etcdctl: fix typo in README
2018-02-12 10:28:13 -08:00
Gyuho Lee
428f8c5b12 Merge pull request #9287 from gyuho/changelog-3.4
CHANGELOG: updates from January/February 2018
2018-02-12 10:15:59 -08:00
Gyuho Lee
02f46938d5 CHANGELOG: updates from January/February 2018
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-12 10:11:55 -08:00
Gyuho Lee
7d8b0ba62d Merge pull request #9307 from yudai/gap_db_size
*: allow dbSizeInUse not to equal to dbSize when growing
2018-02-12 09:46:13 -08:00
Gyuho Lee
a3d0c2e60d Merge pull request #9314 from coreos/ttt
test: fix "internal/store"
2018-02-12 09:34:53 -08:00
Gyuho Lee
73dfbd5a70 Merge pull request #9315 from gyuho/ac
*: regenerate proto with typo fix "acquisition"
2018-02-12 09:33:38 -08:00
Gyuho Lee
a9804cdf75 *: regenerate proto with typo fix "acquisition"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-12 09:25:26 -08:00
Gyuho Lee
3e13424bb8 test: fix "internal/store"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-12 09:21:11 -08:00
opera443399
069c0fc962 etcdctl: fix typo in README
some examples use endpoint with port `:2379` but the others with `:12379`
2018-02-12 10:22:25 +08:00
Sam Batschelet
488ee99ae8 *: replace grpc-gateway endpoint with stable /v3 2018-02-11 19:07:36 -05:00
Gyuho Lee
9c6d930565 Merge pull request #9303 from gyuho/go
*: use latest Go in tests
2018-02-09 16:12:50 -08:00
Xiang Li
10444cc1d7 Merge pull request #9283 from zehweh/patch-1
fix typo in README.md
2018-02-09 15:48:10 -08:00
Xiang Li
0a20767280 Merge pull request #9296 from xiang90/c_r
mvcc: allow large concurrent reads under light  write workload
2018-02-09 11:34:28 -08:00
Gyuho Lee
54b21fa312 Merge pull request #9308 from hexfusion/e2e-u
e2e: improve user coverage
2018-02-09 10:13:37 -08:00
zehweh
4dfd8ab2fc *: fix typo in README.md 2018-02-09 09:23:45 +01:00
Iwasaki Yudai
571e9a9e79 *: allow dbSizeInUse not to equal to dbSize when growing
Due to boltdb behavior, dbSizeInUse can be unequal to dbSize even when
dbSize is growing in some conditions. The possible gap between the sizes
is up to a couple of pages.

Closes #9302
2018-02-08 19:33:21 -08:00
Sam Batschelet
a0f67e9dab e2e: improve user coverage 2018-02-08 22:15:15 -05:00
Xiang
3ebee21407 mvcc: allow large concurrent reads under light write workload 2018-02-08 15:56:56 -08:00
Gyuho Lee
f5d02f0279 Merge pull request #9305 from gyuho/fmt
*: fix govet warnings
2018-02-08 15:14:49 -08:00
Gyuho Lee
678bc98f26 hack/scripts-dev: Makefile with Go 1.9.4, 1.8.7
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-08 14:10:37 -08:00
Gyuho Lee
7be4e451ae travis: use Go 1.9.4 with TARGET_GO_VERSION
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-08 14:10:34 -08:00
Gyuho Lee
deb30b500f tools/etcd-test-proxy: remove newline in "Fprintln"
Fix govet warnings with Go tip

```
tools/etcd-test-proxy/main.go:47: Fprintln arg list ends with redundant
newline
```

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-08 13:35:51 -08:00
Gyuho Lee
0cac7c9cc1 semaphore: use Go 1.9.4, update release upgrade test version
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-08 13:20:35 -08:00
Xiang Li
fe94f8f53a Merge pull request #9300 from xiang90/simple
mvcc: remove unnecessary metrics update code
2018-02-08 10:14:02 -08:00
Xiang
1a3a4d1646 mvcc: remove unncessary metrics update code 2018-02-08 08:59:01 -08:00
Gyuho Lee
b309bc6403 Merge pull request #9299 from hexfusion/rp
*: regenerate proto
2018-02-08 06:10:54 -08:00
Sam Batschelet
7efe72ce93 *: regenerate proto 2018-02-07 22:17:05 -05:00
Gyuho Lee
a0e17f69a2 Merge pull request #9292 from longzhiri/master
build.ps1: remove .\cmd
2018-02-06 20:00:50 -08:00
Zero
03a4fafaf6 build.ps1: remove .\cmd 2018-02-07 10:36:27 +08:00
Xiang Li
11214aa33b Merge pull request #9288 from xiang90/wl
etcdserver: improve request took too long warning
2018-02-06 13:23:41 -08:00
Xiang
b83244bd35 etcdserver: improve request took too long warning 2018-02-06 12:15:52 -08:00
Gyuho Lee
63183f8c18 Merge pull request #9281 from yudai/fix_unrestored_watchers
mvcc: restore unsynced watchers
2018-02-06 11:33:13 -08:00
Gyuho Lee
88d623f06a Merge pull request #9286 from gyuho/vvv
build: fix "internal/version" LD flags
2018-02-06 10:43:46 -08:00
Iwasaki Yudai
fcab10bb2d mvcc: restore unsynced watchers
In case syncWatchersLoop() starts before Restore() is called,
watchers already added by that moment are moved to s.synced by the loop.
However, there is a broken logic that moves watchers from s.synced
to s.uncyned without setting keyWatchers of the watcherGroup.
Eventually syncWatchers() fails to pickup those watchers from s.unsynced
and no events are sent to the watchers, because newWatcherBatch() called
in the function uses wg.watcherSetByKey() internally that requires
a proper keyWatchers value.
2018-02-06 10:30:02 -08:00
Gyuho Lee
3215cf7e68 build: fix "internal/version" LD flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-06 10:16:01 -08:00
Gyuho Lee
3bd0114c50 Merge pull request #9081 from gyuho/network-fault-test-with-proxy
*: run network fault tests with proxy
2018-02-06 09:51:34 -08:00
Gyuho Lee
af44780be1 Merge pull request #9282 from gyuho/raft-index
raft: reuse "last index" in "appendEntry"
2018-02-06 08:00:58 -08:00
Gyuho Lee
2b7c12fb12 raft: reuse "last index" in "appendEntry"
No need to call "lastIndex" again.
"append" call already returns "lastIndex".

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 21:26:45 -08:00
Gyuho Lee
3903385d1b Merge pull request #9272 from gyuho/logger
clientv3: use "pkg.Logger"
2018-02-05 15:41:16 -08:00
Gyuho Lee
99e1bd28b8 Documentation/op-guide: discourage "--force-new-cluster" in recovery
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 14:34:51 -08:00
Gyuho Lee
7ba860ed19 snapshot: use "pkg/logger.NewPackageLogger"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 14:32:26 -08:00
Gyuho Lee
a2ce52d8c2 etcdctl/ctlv3: use "logger.NewPackageLogger"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 13:50:54 -08:00
Gyuho Lee
db68671a71 words: whitelist "args"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 13:42:02 -08:00
Gyuho Lee
1f016f3b96 clientv3: use "pkg/logger"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 13:40:58 -08:00
Gyuho Lee
aba719e4c2 pkg/logger: add "Lvl" to "Logger"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 13:40:51 -08:00
Gyuho Lee
71824474df snapshot: fix "TestSnapshotV3RestoreMultiMemberAdd"
Membership reconfiguration may not be applied
when the new member joins. Also pass all endpoints
to check restore data in case of leader election or
network faults.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-05 13:08:24 -08:00
Gyuho Lee
4e662b26d7 CHANGELOG: rename to "CHANGELOG-2.3.md" 2018-02-05 13:02:59 -08:00
Xiang Li
50d91036a8 Merge pull request #9273 from gyuho/aaa
integration: fix govet error in Go tip
2018-02-05 12:48:57 -08:00
Xiang Li
c80ca24b54 Merge pull request #9278 from xiang90/jitter
v3rpc: add jitter to progress notification
2018-02-05 12:43:51 -08:00
Xiang
142bff89f4 v3rpc: add jitter to progress notification 2018-02-05 10:37:12 -08:00
Gyuho Lee
07f9229731 Merge pull request #9275 from gyuho/v2auth
etcdserver: move "etcdserver/auth" to "etcdserver/v2auth"
2018-02-05 08:33:05 -08:00
Gyuho Lee
eecbba7927 etcdserver: move "etcdserver/auth" to "etcdserver/v2auth"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-02 15:05:56 -08:00
Gyuho Lee
a696343a0f integration: fix govet error in Go tip
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-02 14:33:42 -08:00
Gyuho Lee
6a265731e1 Merge pull request #9271 from yudai/mention_quota_limit
*: Remove 8GiB quota limitation from documents
2018-02-02 14:08:29 -08:00
Iwasaki Yudai
73028efce7 *: Remove 8GiB quota limitation from documents
Also mention that in v3.3 change log.
2018-02-02 12:54:19 -08:00
Gyuho Lee
38a378fa0d Merge pull request #9265 from gyuho/branch-manager
Documentation/dev-internal: update release managers with 3.3 release
2018-02-01 14:24:11 -08:00
Xiang Li
41278822ac Merge pull request #9256 from yudai/actual_db_size
*: Add dbSizeInUse to StatusResposne
2018-02-01 13:24:25 -08:00
Iwasaki Yudai
6b775cd786 *: Add dbSizeInUse to StatusResposne
Existing dbSize shows physically allocated DB size and the backend
(boltdb) won't shrink it after a compaction until a user runs the defrag command.
The new dbSizeInUse shows the DB size that excludes free pages created
by compactions so that users can see the actual DB usage. dbSize >=
dbSizeInUse is always true.
Note that dbSizeInUse shows a page-based size and not byte level usage.
2018-02-01 12:15:23 -08:00
Gyuho Lee
29efcdd78a Documentation/dev-internal: update release managers with 3.3 release
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-01 12:15:04 -08:00
Gyuho Lee
d7e18880a9 CHANGELOG-3.3: v3.3.0 is ready
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-02-01 10:04:47 -08:00
Gyuho Lee
dafbc04a73 Merge pull request #9255 from gyuho/snapshot-doc
snapshot: clarify "Restore" method with conflicting data directory
2018-01-31 10:13:55 -08:00
Gyuho Lee
c59d0f9fe2 snapshot: clarify "Restore" method with conflicting data directory
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-31 10:05:35 -08:00
Gyuho Lee
610aefbb74 Merge pull request #9258 from tamird/dep-cleanup
Gopkg.toml: remove unnecessary constraints and add pruning
2018-01-31 09:59:42 -08:00
Xiang Li
29c8aca4b6 Merge pull request #9257 from gyuho/maintainer-rules
MAINTAINERS: add "MAINTAINERS_RULES" and second email
2018-01-31 08:44:41 -08:00
Tamir Duberstein
42344da5df Gopkg.toml: remove unnecessary constraints and add pruning
Confirmed that `dep ensure` results in no version changes in Gopkg.lock.
2018-01-31 10:21:24 -05:00
Gyuho Lee
15498dafc8 MAINTAINERS: add "MAINTAINERS_RULES" and second email
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-30 14:05:47 -08:00
Gyuho Lee
d9deeff49a Merge pull request #9254 from gyuho/proxy-doc
etcdmain: define "defaultGRPCMaxCallSendMsgSize"
2018-01-30 11:48:46 -08:00
Gyuho Lee
5a62ceb003 etcdmain: define "defaultGRPCMaxCallSendMsgSize"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-30 09:49:03 -08:00
Gyuho Lee
97db7c7d78 Merge pull request #9245 from gyuho/defrag-doc
Documentation/op-guide: highlight defragment operation
2018-01-30 09:42:15 -08:00
Gyuho Lee
1b2d470b24 Merge pull request #9252 from hexfusion/fx_help
etcdmain: add discovery-srv-name
2018-01-30 09:32:21 -08:00
Gyuho Lee
73e020d51d Merge pull request #9250 from zbindenren/grpcproxy_msgsize
grpcproxy: configure --max-send-bytes and --max-recv-bytes for grpc proxy
2018-01-30 09:31:57 -08:00
Gyuho Lee
ab2bc5b93c CHANGELOG-3.3: add "grpc-proxy start --max-send/recv-bytes" flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-30 09:31:02 -08:00
Sam Batschelet
c2171f9bde etcdmain: add discovery-srv-name 2018-01-30 09:18:55 -05:00
Rene Zbinden
9aabe2a2b6 grpcproxy: configure --max-send-bytes and --max-recv-bytes for grpc proxy 2018-01-30 09:38:23 +01:00
Gyuho Lee
42ef97d6d5 Merge pull request #9247 from gyuho/internal-compactor
embed: define "embed.CompactorMode*"
2018-01-29 16:44:49 -08:00
Gyuho Lee
dc36b098ac CHANGELOG-3.3: add "--auto-compaction-mode"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-29 15:49:24 -08:00
Gyuho Lee
6acd3b4643 embed: define "embed.CompactorMode*"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-29 15:42:30 -08:00
Gyuho Lee
1d99d3886f Merge pull request #9244 from coreos/vvv
*: move "version" to "internal/version"
2018-01-29 10:35:30 -08:00
Gyuho Lee
8e7099fa26 Documentation/op-guide: highlight defragment operation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-29 10:22:04 -08:00
Gyuho Lee
37546f74ab *: move "version" to "internal/version"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-29 10:00:20 -08:00
Hitoshi Mitake
0e2f9ea7d5 Merge pull request #9243 from mitake/auth-internal
*: move "auth" to "internal/auth"
2018-01-29 18:32:09 +09:00
Gyuho Lee
9c6c830c61 CHANGELOG-3.4: add "internal/auth" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-28 23:44:09 -08:00
Gyuho Lee
264f8f6577 *: regenerate proto
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-28 23:43:15 -08:00
Hitoshi Mitake
6c91766490 *: move "auth" to "internal/auth" 2018-01-29 14:57:35 +09:00
Gyuho Lee
ce0ad377d2 Merge pull request #9240 from gyuho/vendor
Gopkg.*: remove directive dependencies from Gopkg.toml
2018-01-26 19:38:18 -08:00
Xiang Li
d54f281b26 Merge pull request #8525 from shuaili87/pre-vote-compatible
raft: fix deadlock during PreVote migration process
2018-01-26 16:34:59 -08:00
Gyuho Lee
1c5c8219f2 Gopkg.*: remove directive dependencies from Gopkg.toml
Reproducible builds are already done via Gopkg.lock.
Remove "constraint"s for external projects with conflicting
dependencies.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 14:30:37 -08:00
Gyuho Lee
1153e43b34 Merge pull request #9239 from gyuho/maintainer
MAINTAINERS: @mitake as "pkg:*" maintainer
2018-01-26 12:56:51 -08:00
Gyuho Lee
d126630aef MAINTAINERS: @mitake as "pkg:*" maintainer
Hitoshi has been involved in all components of etcd.
Thanks for your consistent and great work!

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 12:44:18 -08:00
Gyuho Lee
902bdb474e Merge pull request #9238 from gyuho/internal
*: move packages to "internal"
2018-01-26 12:32:36 -08:00
Gyuho Lee
5cc9bfd574 CHANGELOG-3.4: highlight internal package changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 11:23:31 -08:00
Gyuho Lee
2c91007591 *: regenerate proto
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 11:21:40 -08:00
Gyuho Lee
80d15948bc *: move "mvcc" to "internal/mvcc"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 11:14:41 -08:00
Gyuho Lee
349a377a67 *: move "lease" to "internal/lease"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 11:09:29 -08:00
Gyuho Lee
880835c02c *: move "store" to "internal/store"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 11:06:22 -08:00
Gyuho Lee
ca14da00db CHANGELOG-3.4: add "--discovery-srv-name" change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 10:54:29 -08:00
Gyuho Lee
b26b8588b2 Merge pull request #8786 from harryge00/check-empty-hostname
embed: return error when advertise-client-urls are with empty hosts
2018-01-26 10:43:45 -08:00
Gyuho Lee
3808c04655 Merge pull request #9237 from gyuho/log-backend
etcdserver: clarify warnings on backend open taking >10 seconds
2018-01-26 10:42:26 -08:00
Gyuho Lee
0365a9dee8 etcdserver: clarify warnings on backend open taking >10 seconds
If db file is 10 GiB, it can take more than 1-second.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-26 10:19:21 -08:00
Sam Batschelet
5b95494b2d Merge pull request #9201 from njuettner/master
Documentation/op-guide: Typo instance type GCE
2018-01-26 07:42:53 -05:00
Nick Jüttner
cb3a38944e Documentation/op-guide: Typo instance type GCE 2018-01-26 12:02:35 +01:00
harryge00
6912a8e59e embed: return error when advertise-client-urls or initial-advertise-peer-urls are with empty hosts 2018-01-26 11:10:09 +08:00
Gyuho Lee
6faeddb922 Merge pull request #9233 from gyuho/discovery
*: move "discovery" to "internal/discovery"
2018-01-25 16:56:27 -08:00
Gyuho Lee
432581c7d0 *: move "discovery" to "internal/discovery"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-25 15:41:17 -08:00
Gyuho Lee
798586b5f1 Merge pull request #9234 from gyuho/internal-alarm-compactor
*: move "alarm,compactor" to "internal/*"
2018-01-25 15:35:53 -08:00
Gyuho Lee
46b9844ca5 *: move "alarm,compactor" to "internal/*"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-25 15:26:21 -08:00
Gyuho Lee
a9aa691a85 CHANGELOG: add 3.4 endpoint status change, 3.3 DNS error handling
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-25 14:45:37 -08:00
Gyuho Lee
28db30fee2 Merge pull request #9231 from bgilbert/fleet
Documentation: drop fleet from integration lists
2018-01-25 12:46:36 -08:00
Benjamin Gilbert
4c801ee315 Documentation: drop fleet from integration lists
fleet is deprecated and no longer maintained.
2018-01-25 12:08:46 -08:00
Gyuho Lee
0c692fb898 Merge pull request #9210 from gyuho/dns-error
*: add detailed error message on URLs equal check
2018-01-25 11:57:10 -08:00
Gyuho Lee
ce45c83f29 etcdserver: add detailed errors in "ValidateClusterAndAssignIDs"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-25 11:22:10 -08:00
Gyuho Lee
e1de74913d pkg/netutil: return error from "URLStringsEqual"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-25 11:22:07 -08:00
Gyuho Lee
2b10bcccee etcdserver: add error details on DNS resolution failure on advertise URLs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-25 10:35:36 -08:00
Sam Batschelet
7dd9c30ae7 Merge pull request #8690 from tavish-stripe/tavish/svc-flag
pkg/srv, embed, etcdmain: Support multiple clusters in the same DNS domain
2018-01-25 10:42:15 -05:00
Gyuho Lee
3fdaf4eaa7 Merge pull request #9206 from dvonthenen/feature/issue9163
Exposes alarm/health information in "etcdctl endpoint status"
2018-01-25 07:18:22 -08:00
Gyuho Lee
8ee3f5aaac Merge pull request #9228 from mkumatag/fix_govet
Fix govet
2018-01-25 07:17:52 -08:00
Manjunath A Kumatagi
c27998db97 raft: fix govet errors 2018-01-25 04:51:38 -05:00
Manjunath A Kumatagi
f705c1be9b lease: fix govet errors 2018-01-25 04:51:13 -05:00
Manjunath A Kumatagi
97817404c9 integration: Fix govet errors 2018-01-25 04:50:40 -05:00
Manjunath A Kumatagi
fd20ba75dc etcdctl: Fix govet errors 2018-01-25 04:50:09 -05:00
Manjunath A Kumatagi
b0d3c07fe5 e2e: Fix govet errors 2018-01-25 04:49:30 -05:00
Manjunath A Kumatagi
1f638c4ad8 clientv3: Fix govet errors 2018-01-25 04:48:47 -05:00
saiwl
4822116698 lease: Change lease Mutex to RWMutex 2018-01-25 16:19:28 +08:00
Manjunath A Kumatagi
89221a25b8 mvcc : Fix Govet errors 2018-01-25 02:30:37 -05:00
Manjunath A Kumatagi
86c086664c auth: Fix govet errors 2018-01-25 02:30:04 -05:00
Tavish Armstrong
81c9f78502 Documentation: document the -discovery-srv-name flag for configuring service name in DNS discovery. 2018-01-25 01:56:19 +00:00
Gyuho Lee
37f577ca0f CHANGELOG: add missing 3.2~3.4 changes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:51:23 -08:00
Gyuho Lee
c61b660f13 tools/functional-tester: update README for local docker testing
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:31 -08:00
Gyuho Lee
1f58e72944 hack/scripts-dev: clean up "Makefile"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:31 -08:00
Gyuho Lee
e8242dd916 hack/scripts-dev: add "build-docker-functional-tester" to Makefile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:31 -08:00
Gyuho Lee
e33ef34c16 Dockerfile-functional-tester: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:31 -08:00
Gyuho Lee
0ca37a0c1d gitignore: add ".Dockerfile-functional-tester"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:31 -08:00
Gyuho Lee
5960c7519f test: configure advertise ports in functional_pass
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
a90695fd5f etcd-tester: set advertise ports, delay w/ network faults
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
a912ddcf20 etcd-agent: use "pkg/transport.Proxy"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
42c90ffd83 test: remove "use-root" in functional_pass
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
affcaef868 etcd-agent: remove "use-root"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
8bba5367f0 functional-tester: remove old assets
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
27d938f825 hack/scripts-dev: add "build-etcd-test-proxy" to Makefile
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
849f88edbf etcd-test-proxy: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
ab486e5348 pkg/transport: implement "Proxy"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
114a7779c9 pkg/transport: add "fixtures" for TLS tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 17:37:09 -08:00
Gyuho Lee
aadfb2b7c6 Merge pull request #9155 from gyuho/dep
vendor: migrate to "golang/dep"
2018-01-24 17:34:04 -08:00
Gyuho Lee
96a0392d44 build: specify target with "${REPO_PATH}"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:27:06 -08:00
Gyuho Lee
fcfbeb30e8 tools/benchmark/cmd: fix fmt warning in import path
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
4d06d32ded build: remove "./cmd/etcd,etcdctl"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
a270a91292 build.ps1: remove "cmd/vendor"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
ab7c319b8c travis.yml: remove "./cmd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
97cd2a41c8 client,clientv3: remove "cmd/vendor" in README.md
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
6eefc93343 test: remove "./cmd", "etcd_setup_gopath"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
c8e5311131 Dockerfile: remove "cmd/vendor"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
66d6a39c46 Documentation/op-guide: remove "./cmd/vendor" in monitoring.md
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
ab249384b9 Documentation/dl_build: remove "./cmd/etcd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
698ec7f7d5 scripts/updatebom.sh: remove "./cmd/vendor"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
b596c3c119 tools/functional-tester: update "build" script
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
b5d5ce4b80 Gopkg.lock: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
970ab0b966 vendor: regenerate
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
65ee3a05d6 Gopkg.toml: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
4fc2db7d65 gitignore: ignore test files in "vendor"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
b1e87f8ae1 cmd: move "cmd/vendor" to root, remove "cmd"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:17 -08:00
Gyuho Lee
fa9f3dd124 glide: remove
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:16 -08:00
Gyuho Lee
505d24c463 scripts/updatedep.sh: use "golang/dep"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 15:26:16 -08:00
dvonthenen
db822ed38f *: add alarm/health information in endpoint status
Update to remove raftIndex and document the Alarms() interface

Fix formatting

Fix typo
2018-01-24 13:12:48 -08:00
Tavish Armstrong
b664b9176c pkg/srv, embed, etcdmain: Support multiple clusters in the same DNS discovery region. 2018-01-24 20:15:48 +00:00
Gyuho Lee
7331949a47 Merge pull request #9211 from gyuho/raftsnap
*: rename "snap" to "raftsnap"
2018-01-24 11:19: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
d095cc6ff0 raftsnap: add "doc.go"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:28:06 -08:00
Gyuho Lee
b42e158b51 CHANGELOG-3.4: add "raftsnap" package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:26:07 -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
Gyuho Lee
bb2c48b38a rafthttp: rename "snap" to "raftsnap" package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:26:07 -08:00
Gyuho Lee
6a70a931d3 etcdserver: rename "snap" to "raftsnap" package
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:26:07 -08:00
Gyuho Lee
60d5ab5485 raftsnap: rename "snap" to "raftsnap"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-24 10:26:07 -08:00
Xiang Li
0ef5e01bd9 Merge pull request #9217 from ka1em/patch-2
clientv3/namespace: fixed an error in the doc.go
2018-01-24 10:13:04 -08:00
Xiang Li
216247570c Merge pull request #9202 from olvesh/patch-1
Documentation/op-guide: integer value of 1 is 100% not 1% for failing reqs
2018-01-24 09:56:37 -08:00
Olve S. Hansen
2bc0ba4f17 Documentation/op-guide: integer value of 1 is 100% not 1% for failing reqs 2018-01-24 17:09:26 +01:00
ka1em
c143545d13 clientv3/namespace: fixed an error in the doc.go 2018-01-24 23:36:58 +08:00
Gyuho Lee
64713e5927 Merge pull request #9203 from gyuho/ccc
Documentation/op-guide: fix CHANGELOG links in security.md
2018-01-23 18:42:50 -08:00
Gyuho Lee
80250827ab Merge pull request #9208 from gyuho/fix-godoc-snapshot
snapshot: fix "Save" godoc description
2018-01-23 14:54:46 -08:00
Gyuho Lee
c1519e5e98 snapshot: fix "Save" godoc description
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 14:30:20 -08:00
Xiang Li
2e85b6c321 Merge pull request #9204 from bdarnell/prevote-take-3
raft: Clarify conditions for granting votes and prevotes.
2018-01-23 14:21:58 -08:00
Gyuho Lee
131da29c63 Merge pull request #9198 from gyuho/snapshot-test
snapshot: add "snapshot" restore/save/member-add tests
2018-01-23 13:59:05 -08:00
Gyuho Lee
f812b9faf1 Merge pull request #9205 from gyuho/go-upgrade
travis,semaphore: use Go 1.9.3
2018-01-23 13:58:50 -08:00
Gyuho Lee
efb7958687 hack/scripts-dev: use Go 1.9.3 by default
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 13:17:32 -08:00
Gyuho Lee
7df3dfbcdd semaphore,travis: test with Go 1.9.3
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 13:17:20 -08:00
Gyuho Lee
7eb0523bd2 pkg/testutil: define "RequestTimeout"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 13:13:00 -08:00
Gyuho Lee
48f3e800c7 snapshot: add "snapshot" restore/save/member-add tests
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 13:12:56 -08:00
Ben Darnell
4e0291ff91 raft: Clarify conditions for granting votes and prevotes.
This includes one theoretical logic change: A node that knows the
leader of the current term will no longer grant votes, even if it has
not yet voted in this term. It also adds a `m.Type == MsgPreVote`
guard on the `m.Term > r.Term` check, which was previously thought to
be incorrect (see #8517) but was actually just unclear.

Closes #8517
Closes #8571
2018-01-23 15:05:11 -05:00
Gyuho Lee
11f95e121c CHANGELOG: use Go 1.9.3 with etcd 3.3.0, clarify gRPC versions
Add more breaking changes to 3.4

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 11:37:06 -08:00
Gyuho Lee
20fbe76277 Documentation/op-guide: fix CHANGELOG links in security.md
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 11:00:48 -08:00
Gyuho Lee
495ed39fc8 CHANGELOG: add missing changes from 3.2.15, 3.3.0-rc.4
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-23 09:51:58 -08:00
Gyuho Lee
6f178e8fb2 Merge pull request #9187 from gyuho/changelog
CHANGELOG: track per each minor release
2018-01-23 09:20:15 -08:00
Gyuho Lee
4a12eafb1e Merge pull request #9118 from gyuho/snapshot-code
*: add snapshot package
2018-01-22 17:31:19 -08:00
Gyuho Lee
df689f4280 etcdctl/ctlv3: use "snapshot" package for "snapshot" command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 16:46:15 -08:00
Gyuho Lee
c3ba417737 etcdctl/ctlv3: replace "dbStatus" with "snapshot.Status"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 16:46:15 -08:00
Gyuho Lee
8b317df97a e2e: use "snapshot.Status"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 16:46:15 -08:00
Gyuho Lee
6e2555fb95 snapshot: initial commit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 16:46:11 -08:00
Gyuho Lee
962505fb1a Merge pull request #9196 from gyuho/log
pkg/logger: type-assert in global-scope
2018-01-22 14:55:08 -08:00
Gyuho Lee
0e43d84f14 pkg/logger: type-assert in global-scope
Rather than asserting inside functions.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 14:50:46 -08:00
Gyuho Lee
ea814d230f Merge pull request #9194 from gyuho/logger
pkg/logger: initial commit
2018-01-22 14:47:35 -08:00
Gyuho Lee
cb0290e782 pkg/logger: initial commit
Later to be used with "snapshot" and "clientv3" packages.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 13:52:06 -08:00
Gyuho Lee
cdf7fcda60 Merge pull request #9184 from hexfusion/e2e-member
e2e: improve Member TLS test coverage.
2018-01-22 13:45:48 -08:00
Gyuho Lee
b590d529d7 Merge pull request #9174 from gyuho/url-error
clientv3: prevent wrong URLs to cluster APIs
2018-01-22 12:36:56 -08:00
Gyuho Lee
c837e01c7f clientv3/integration: add TestMemberAddUpdateWrongURLs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 11:24:15 -08:00
Gyuho Lee
ab35c8fe3c words: whitelit "rafthttp"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 11:16:16 -08:00
Gyuho Lee
a2e999fa4c clientv3: prevent no-scheme URLs to cluster APIs
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 11:11:59 -08:00
Xiang Li
202cc9a917 Merge pull request #9176 from dvonthenen/feature/issue9123
Expose Raft Applied Index through to "etcdctl endpoint status"
2018-01-22 10:20:31 -08:00
Gyuho Lee
174a9889fd CHANGELOG: track per each minor release
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 09:35:15 -08:00
Gyuho Lee
5cce65086a Merge pull request #9182 from gyuho/peer-to-peer-common-name
Documentation/op-guide: explain `--peer-cert-allowed-cn` in security.md
2018-01-22 09:33:11 -08:00
Gyuho Lee
30de11f500 Documentation/op-guide: explain --peer-cert-allowed-cn in security.md
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-22 09:27:12 -08:00
dvonthenen
25cdf4ed92 *: expose Raft Applied Index through to "etcdctl endpoint status"
Fixed based on feedback

Fixed spacing

Fix gofmt
2018-01-22 07:37:21 -08:00
Sam Batschelet
61bc0678e2 e2e: improve Member TLS coverage. 2018-01-20 12:22:46 -05:00
Gyuho Lee
0b9dc9ccd3 hack/scripts-dev: update docker images, update DNS cert CN example
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-19 22:11:46 -08:00
Gyuho Lee
1a0057bcb5 CHANGELOG: fix typo "--peer-cert-allowed-cn"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-19 21:53:34 -08:00
Gyuho Lee
0f1ac0cef6 Merge pull request #9178 from gyuho/error-handling
etcdserver/api/v3rpc: debug-log client disconnect on TLS, http/2 stream CANCEL
2018-01-19 13:01:16 -08:00
Gyuho Lee
0cf9382024 words: whitelist "errClientDisconnected"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-19 12:26:59 -08:00
Gyuho Lee
d0eff45256 etcdserver/api/v3rpc: debug-log client disconnect on TLS, http/2 stream CANCEL
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-19 12:26:56 -08:00
Gyuho Lee
7f68327184 Merge pull request #9172 from ppggff/master
Fix a typo
2018-01-19 10:11:21 -08:00
ppggff
baa9b17cac Documentation/learning: Fix a typo 2018-01-20 00:15:38 +08:00
Gyuho Lee
3e6417b770 Merge pull request #9170 from gyuho/tls-doc
Documentation/op-guide: Clarify TLS "--peer" flags
2018-01-18 16:32:51 -08:00
Gyuho Lee
98190821b3 Documentation/op-guide: Clarify TLS "--peer" flags
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-18 16:25:13 -08:00
Gyuho Lee
ab7cbb0e57 Merge pull request #9169 from gyuho/client-doc
clientv3: document client-side request size limit
2018-01-18 13:09:15 -08:00
Gyuho Lee
f98b1bc725 clientv3: document client-side request size limit
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-18 12:44:01 -08:00
Gyuho Lee
ab2bb9de9e Merge pull request #9129 from gyuho/doc
Documentation/dev-guide: update "Request size limit" with v3.2.12
2018-01-18 12:38:33 -08:00
Gyuho Lee
675b837d6d Documentation/dev-guide: update "Request size limit" with v3.2.12
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-18 12:25:22 -08:00
Gyuho Lee
955198da6b Merge pull request #9168 from gyuho/grpc-doc
Documentation: add TCP RST flag on stream close
2018-01-18 12:21:24 -08:00
Gyuho Lee
aac7e1cba7 Documentation: add TCP RST flag on stream close
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-18 12:20:21 -08:00
Gyuho Lee
729eab92b1 CHANGELOG: add v3.3.0-rc.3
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 16:10:33 -08:00
Gyuho Lee
367c0f29d9 Merge pull request #9162 from gyuho/remove-errors
*: remove "errors" field in /health endpoint
2018-01-17 16:07:54 -08:00
Gyuho Lee
e689ff823e proxy/grpcproxy: remove "Errors" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 15:58:56 -08:00
Gyuho Lee
8455f22285 Documentation/upgrades: highlight "health", remove "errors" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 15:58:53 -08:00
Gyuho Lee
1139d28eb6 e2e: remove "/health" "errors" field test
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 15:18:39 -08:00
Gyuho Lee
1b4502114f etcdserver/api/etcdhttp: remove "errors" field in /health
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 15:18:32 -08:00
Gyuho Lee
b5bb91a7c2 CHANGELOG: add /health endpoint change, watch command updates
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 14:08:27 -08:00
Gyuho Lee
b6be8fb689 Documentation/upgrades: highlight string "health" field
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 13:58:20 -08:00
Gyuho Lee
79710d32c3 Merge pull request #9160 from kchristidis/fix-raft-readme
docs: fix invalid reference in Raft README
2018-01-17 13:50:36 -08:00
Kostas Christidis
97fad42d81 docs: fix invalid reference in Raft README
Code snippet in Raft README refers to non-existent field `State`. Fixed
the reference by setting it to `HardState`.
2018-01-17 16:03:32 -05:00
Gyuho Lee
30511860a6 Merge pull request #9142 from gyuho/watch-env
ctlv3: support ETCDCTL_WATCH_KEY, ETCDCTL_WATCH_RANGE_END
2018-01-17 12:39:49 -08:00
Gyuho Lee
6a80e94e50 Merge pull request #9143 from liggitt/healthz-schema
api/etcdhttp: change /health type back to string for backwards compatibility
2018-01-17 11:27:21 -08:00
Xiang Li
5b7a869b06 Merge pull request #9154 from gyuho/3.4-roadmap
ROADMAP: update 3.4 roadmap
2018-01-17 10:21:03 -08:00
Gyuho Lee
b8a95d7a9b etcdctl: document "ETCD_WATCH_*"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 09:54:37 -08:00
Gyuho Lee
6ba5682e64 e2e: test ETCD_WATCH_VALUE
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 09:54:37 -08:00
Gyuho Lee
5e0118d7ef ctlv3: set ETCD_WATCH_* on watch exec
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-17 09:54:16 -08:00
Gyuho Lee
dfe957e928 ROADMAP: update 3.4 roadmap
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-16 14:42:37 -08:00
Gyuho Lee
2c347d7158 ctlv3: exit on exec watch error
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-16 09:04:46 -08:00
Gyuho Lee
72a2a6671e ctlv3: set ETCD_WATCH_KEY, ETCD_WATCH_VALUE on exec watch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-16 09:03:10 -08:00
Jordan Liggitt
f77e54eb13 api/etcdhttp: change /health type back to string for backwards compatibility 2018-01-15 01:57:55 -05:00
Gyuho Lee
388b7fece6 ctlv3: handle pkg/flags warnings
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-14 11:15:45 -08:00
Gyuho Lee
57284aac28 etcdctl: document watch with ETCDCTL_WATCH_*
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-14 11:15:45 -08:00
Gyuho Lee
503781e3a0 e2e: add watch tests with ETCDCTL_WATCH_*
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-14 11:15:41 -08:00
Gyuho Lee
8183b83220 ctlv3: support ETCDCTL_WATCH_KEY, ETCDCTL_WATCH_RANGE_END
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-14 02:30:03 -08:00
Gyuho Lee
7a8c192c8f Merge pull request #9140 from gyuho/tls-doc
Documentation/op-guide: clarify security.md on TLS auth
2018-01-12 15:22:24 -08:00
Gyuho Lee
eeb4d35b3f Documentation/op-guide: clarify security.md on TLS auth
Make it more accurate (just as pkg/transport/listener_tls.go does).

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-12 14:54:39 -08:00
Gyuho Lee
60e8432807 CHANGELOG: add "raft" package changes/fixes
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-12 10:31:16 -08:00
Gyuho Lee
6f7eda3b1b Merge pull request #9136 from mitake/fix-9094
etcdctl: don't ask password twice for etcdctl endpoint health --cluster
2018-01-12 09:58:52 -08:00
Gyuho Lee
745b241a9c Merge pull request #9139 from gyuho/fix-tester
etcd-tester: update stresser weights with txn stresser
2018-01-12 09:40:42 -08:00
Gyuho Lee
7783aada6a etcd-tester: update stresser weights with txn stresser
Large key writes (stressEntries[1].weight) should not take this
much weight. It was triggering "database size exceeded" errors.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-12 00:17:13 -08:00
Hitoshi Mitake
b337674971 etcdctl: don't ask password twice for etcdctl endpoint health --cluster
Current etcdctl endpoint health --cluster asks password twice if auth
is enabled. This is because the command creates two client instances:
one for the purpose of checking endpoint health and another for
getting cluster members with MemberList(). The latter client doesn't
need to be authenticated because MemberList() is a public RPC. This
commit makes the client with no authed one.

Fix https://github.com/coreos/etcd/issues/9094
2018-01-12 15:39:42 +09:00
Xiang Li
c5532ebbf6 Merge pull request #9067 from absolute8511/optimize-raft-drop
raft: let raft step return error when proposal is dropped to allow fail-fast
2018-01-11 19:54:52 -08:00
Vincent Lee
30ced5b2be raft: let raft step return error when proposal is dropped to allow fail-fast. 2018-01-12 10:16:47 +08:00
Sahdev Zala
e16abdfade Merge pull request #9115 from gyuho/doc-watch
clientv3: document possible memory pile-up in Watch
2018-01-11 18:12:13 -05:00
Gyuho Lee
a86e1ff494 CHANGELOG: add v3.2.14, v3.3.0-rc.2
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-11 11:39:18 -08:00
Gyuho Lee
63e4a30cee Merge pull request #9133 from gyuho/tester-fix
etcd-tester: fix "writeTxn" key selection
2018-01-11 11:16:42 -08:00
Xiang Li
285c7e6fc9 Merge pull request #9116 from absolute8511/fix-raft-learner
raft: raft learners should be returned after applyConfChange
2018-01-11 06:08:29 -08:00
Gyuho Lee
6cf220c92a etcd-tester: fix "writeTxn" key selection
Found when debugging https://github.com/coreos/etcd/issues/9130.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-11 03:06:51 -08:00
Vincent Lee
11fa4f0275 raft: raft learners should be returned after applyConfChange 2018-01-11 17:30:17 +08:00
Gyuho Lee
52f73c5a6c Merge pull request #8510 from gyuho/txn-stresser
etcd-tester: add txn stresser
2018-01-09 14:17:43 -08:00
Gyu-Ho Lee
38105095cd test: limit stress-qps for slow CI machines, add txn flags
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
2018-01-09 13:43:36 -08:00
Gyu-Ho Lee
e41c10347a etcd-tester: add txn stresser
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
2018-01-09 13:43:34 -08:00
Xiang Li
bcc5ea6a27 Merge pull request #9120 from spzala/statusfromerror
StatusFromError: handle return value of the function
2018-01-09 13:00:23 -08:00
Gyuho Lee
423125a897 Merge pull request #9125 from gyuho/gateway
*: pin latest grpc-gateway release v1.3.1
2018-01-09 12:49:00 -08:00
Gyuho Lee
fd16656af1 scripts/genproto: use "grpc-gateway" v1.3.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-09 12:41:49 -08:00
Gyuho Lee
d1526c992a vendor: upgrade "grpc-ecosystem/grpc-gateway" to v1.3.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-09 12:40:21 -08:00
Gyuho Lee
7673f7e4c5 CHANGELOG: fix v3.4.0 link, punctuations
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-09 12:16:41 -08:00
Gyuho Lee
8cb8d2c017 CHANGELOG: update v3.3.0, add v3.4.0
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-09 12:10:15 -08:00
Gyuho Lee
1e488f3548 Merge pull request #9124 from gyuho/snapshot-restore
ctlv3: add "snapshot restore --wal-dir"
2018-01-09 11:11:59 -08:00
Gyuho Lee
285a83d70a ctlv3: add "snapshot restore --wal-dir"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-09 09:25:26 -08:00
Sahdev P. Zala
3b7e2ce0ca StatusFromError: handle return value of the function
status.FromError can return nil, false. We are handling the return values
most places in code but some places we aren't. Fixing it herewith.

Fixes #9117
2018-01-08 22:28:20 -05:00
Gyuho Lee
9bd9d2041f Merge pull request #9122 from gyuho/temp
raft: fix wrong comments in "mustCheckOutOfBounds"
2018-01-08 18:34:29 -08:00
GhostComputing
b3916a393f raft: fix wrong comments in "mustCheckOutOfBounds" 2018-01-08 18:31:22 -08:00
Xiang Li
ed1ff9e952 Merge pull request #9073 from bdarnell/pending-conf-index
raft: Avoid scanning raft log in becomeLeader
2018-01-08 16:37:36 -08:00
Gyuho Lee
a1d3456641 Merge pull request #9119 from yudai/panic_defrag_fail
mvcc: check null before set FillPercent not to panic
2018-01-08 12:48:48 -08:00
Iwasaki Yudai
0b1b82aff2 mvcc: check null before set FillPercent not to panic
Since CreateBucketIfNotExists() can return nil when it gets an error,
accessing FillPercent must be done after a nil check, not to cause
a panic.
2018-01-08 11:34:34 -08:00
Gyuho Lee
31c2d4b0a2 clientv3: document possible memory pile-up in Watch
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-08 10:37:47 -08:00
Xiang Li
44e1f6f019 Merge pull request #9105 from spzala/getrevision
etcdserver/api/v3rpc: debug user cancellation and log warning for rest
2018-01-08 10:07:57 -08:00
Sahdev P. Zala
a66d7c3ba5 etcdserver/api/v3rpc: debug user cancellation and log warning for rest
The context error with cancel code is typically for user cancellation which
should be at debug level. For other error codes we should display a warning.

Fixes #9085
2018-01-08 11:03:13 -05:00
Xiang Li
6f76e46c0c Merge pull request #9108 from Quentin-M/embed_ext_metrics
embed: enable extensive metrics if specified
2018-01-07 08:44:02 -08:00
Quentin MACHU
a535c01050 embed: enable extensive metrics if specified 2018-01-06 20:40:30 +01:00
Gyuho Lee
65464838ba Merge pull request #9065 from gyuho/watch-id-2
*: allow user-provided watch ID to mvcc
2018-01-05 15:08:10 -08:00
Gyuho Lee
2fb9728473 Merge pull request #9100 from gyuho/flag
etcdmain: unset ETCD_UNSUPPORTED_ARCH after arch check
2018-01-04 17:03:35 -07:00
Gyuho Lee
936c4745c1 etcdmain: unset ETCD_UNSUPPORTED_ARCH after arch check
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-04 22:47:59 +00:00
Gyuho Lee
872fd9d42a Merge pull request #9101 from ericchiang/coc
automated PR: update CoC
2018-01-04 15:44:40 -07:00
Eric Chiang
2395f8e81c CODE_OF_CONDUCT: update CoC 2018-01-04 22:44:07 +00:00
Gyuho Lee
a7d387cc42 Merge pull request #9093 from spzala/getrevision
DocCommand: use regex wildcard
2018-01-03 23:52:56 -08:00
Sahdev P. Zala
526f3c1f5f DocCommand: use regex wildcard
The current command as such produces no output on mac term or bash shell.
Using regex wildcard works fine on mac and linux.
2018-01-03 21:46:38 -05:00
Gyuho Lee
6915a718b9 Merge pull request #9090 from gyuho/fix
clientv3/integration: fix typos
2018-01-03 17:31:32 -08:00
Gyuho Lee
7b4fc2601c clientv3/integration: fix typos
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-03 17:26:43 -08:00
Gyuho Lee
a069799810 Merge pull request #9005 from hexfusion/fx_test_const
integration: add constant requestWaitTimeout.
2018-01-03 14:48:00 -08:00
Sam Batschelet
d21fef2d41 integration: add constant RequestWaitTimeout. 2018-01-03 15:53:57 -05:00
Xiang Li
17ce61bd0d Merge pull request #9088 from nvanbenschoten/nvanbenschoten/leaner
raft: s/leaner/learner/g
2018-01-03 08:41:53 -08:00
Nathan VanBenschoten
e6dc57f708 raft: s/leaner/learner/g 2018-01-03 08:16:50 -05:00
Xiang Li
664f9bd5ba Merge pull request #9082 from spzala/checkperf
Doc: Create doc for etcdctl check perf command
2018-01-02 21:32:56 -08:00
Sahdev P. Zala
d11c687803 Doc: create doc for check perf command
Create a doc for check commands with perf subcommand.

Fixes #9072
2018-01-02 20:22:55 -05:00
Gyuho Lee
c699470d3b Merge pull request #9074 from gyuho/expect
pkg/expect: fix deadlock in macOS
2018-01-02 14:00:12 -08:00
Gyuho Lee
bdf6e85604 Merge pull request #9084 from gyuho/changelog
CHANGELOG: add v3.2.13, v3.3.0-rc.1
2018-01-02 13:38:56 -08:00
Gyuho Lee
b78c51ae9f CHANGELOG: add v3.2.13, v3.3.0-rc.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-02 13:21:28 -08:00
Gyuho Lee
14ec0673e1 Merge pull request #9083 from gyuho/proxy-grpc-msg-size
clientv3/integration: fix TestKVLargeRequests with -tags cluster_proxy
2018-01-02 11:08:16 -08:00
Gyuho Lee
916d9db5b9 Merge pull request #9080 from gyuho/log-debug
etcdserver: log stream error with debug level, silence gRPC server info level logs
2018-01-02 11:01:16 -08:00
Gyuho Lee
e567d94fc2 tools/functional-tester: remove duplicate grpclog set
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-02 11:00:42 -08:00
Gyuho Lee
806ff6dff9 clientv3/integration: fix TestKVLargeRequests with -tags cluster_proxy
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-02 10:50:29 -08:00
Gyuho Lee
5b2f5150d9 etcdserver/api/v3rpc: set grpclog once
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-02 10:12:49 -08:00
Gyuho Lee
9e11ef3ad5 etcdserver,embed: discard gRPC info logs when debug is off
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-02 09:29:07 -08:00
Gyuho Lee
9a50255515 etcdserver/api/v3rpc: log stream error with debug level
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-02 07:44:07 -08:00
Xiang Li
e6a46a0ca6 Merge pull request #9076 from spzala/rangeend
README: range-end is not a flag and should not be used
2018-01-01 22:35:55 -08:00
Sahdev P. Zala
f6f4589853 README: range-end is not a flag and should not be used
As README declares in the beginning, flags can have dash and it should be
replaced with underscore while using. Also flags or commands are emphasized
in general. The range-end is not a flag or valid doc word and should not be
used as such.
2018-01-01 22:51:04 -05:00
Gyuho Lee
b2a15ec327 pkg/expect: fix deadlock in mac OS
bufio.NewReader.ReadString blocks even
when the process received syscall.SIGKILL.
Remove ptyMu mutex and make ReadString return
when *os.File is closed.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2018-01-01 17:34:59 -08:00
Gyuho Lee
10522f88f5 clientv3: handle non -1 watch ID on cancellation
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 17:43:28 -08:00
Gyuho Lee
33c732b97c api/v3rpc: add watch ID to "watchStream.Watch"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 13:20:41 -08:00
Gyuho Lee
82a164e3b9 mvcc: make test struct fields unexported
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 13:20:41 -08:00
Connor Peet
fc3b59046f mvcc: allow clients to assign watcher IDs
This allows for watchers to be created concurrently
without needing potentially complex and latency-adding
queuing on the client.

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 13:20:40 -08:00
Gyuho Lee
652841c411 *: regenerate proto
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 13:20:40 -08:00
Gyuho Lee
7800fd9fff scripts/genproto: require protoc 3.5.1
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 13:20:40 -08:00
Gyuho Lee
9bbfa23183 etcdserverpb: add "watch_id" to "WatchCreateRequest"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-31 13:20:40 -08:00
Ben Darnell
8d8f3195e4 raft: Avoid scanning raft log in becomeLeader
Scanning the uncommitted portion of the raft log to determine whether
there are any pending config changes can be expensive. In
cockroachdb/cockroach#18601, we've seen that a new leader can spend so
much time scanning its log post-election that it fails to send
its first heartbeats in time to prevent a second election from
starting immediately.

Instead of tracking whether a pending config change exists with a
boolean, this commit tracks the latest log index at which a pending
config change *could* exist. This is a less expensive solution to
the problem, and the impact of false positives should be minimal since
a newly-elected leader should be able to quickly commit the tail of
its log.
2017-12-30 10:13:36 -05:00
Xiang Li
fdec12cc20 Merge pull request #9069 from spzala/logconfigfile
Log: add information statement
2017-12-27 19:33:13 -08:00
Sahdev P. Zala
8a8aff198f Log: add information statement
Adding information that when config file is used other command line flags
and env variables will be ignored. This changes are a follow up of a
disucssion under PR,
https://github.com/coreos/etcd/pull/9066
2017-12-27 17:12:28 -05:00
Xiang Li
5e78da17fe Merge pull request #9066 from spzala/etcdconfig
Doc: update etcd configuration detail with config file
2017-12-24 21:06:22 -08:00
Sahdev P. Zala
aad0d82a04 Doc: update etcd configuration detail with config file
Add a reference, sample file link and precedence detail etc. to the
configuration doc.
2017-12-24 21:02:03 -05:00
Xiang Li
0fd3df0b95 Merge pull request #8703 from koko990/master
grpc_naming.md: improve docs invoke grpc naming by balance
2017-12-22 15:27:07 -08:00
Gyuho Lee
9ed3437075 Merge pull request #9061 from gyuho/race-leasing
clientv3/leasing: fix racey waitSession
2017-12-21 17:50:05 -08:00
Gyuho Lee
2f57a84ee6 Merge pull request #9062 from spzala/acidepupdate
Doc: update etcd container image registry references
2017-12-21 17:06:14 -08:00
Sahdev P. Zala
290117cfa5 Doc: update etcd container image registry references
Update the coreos.com/etcd:v3.1.2 references with the quay registry for etcd
release image example.

Fixes #8984
2017-12-21 19:28:41 -05:00
Gyuho Lee
1880cf8da2 clientv3/leasing: fix racey waitSession
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 16:03:35 -08:00
Gyuho Lee
3dd1c1b53c Merge pull request #8994 from gyuho/grpc-proxy-log
*: discard only info when --debug=false, add "--debug" grpc-proxy start
2017-12-21 14:43:05 -08:00
Gyuho Lee
8e6ae01709 CHANGELOG: update gRPC log level change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 14:35:01 -08:00
Gyuho Lee
4f71941172 grpc-proxy: add "--debug" flag to "etcd grpc-proxy start" command
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 14:30:51 -08:00
Gyuho Lee
39d0e9c3ca embed: only discard infos when debug flag is off
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 14:28:13 -08:00
Gyuho Lee
91996607a3 Merge pull request #9060 from gyuho/aaa
*: highlight client response size limit (4 MiB) in previous versions
2017-12-21 14:21:43 -08:00
Gyuho Lee
2829b97ad3 Documentation/upgrades: highlight client response size limit in previous versions
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 14:21:21 -08:00
Gyuho Lee
e6adc85e9d CHANGELOG: highlight client response limit in previous versions
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 14:04:12 -08:00
Gyuho Lee
be40d27070 Merge pull request #9016 from gyuho/watch-doc
clientv3: document context to "Watch" API
2017-12-21 13:02:20 -08:00
Gyuho Lee
a69801014a words: whitelist more words
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 12:59:18 -08:00
Gyuho Lee
f6f3a9ca69 clientv3: document context to "Watch" API
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-21 12:59:15 -08:00
Gyuho Lee
ce264e6000 Merge pull request #9041 from gyuho/etcd-tooling
tools/etcd-dump-*: add TODOs, --decode flag
2017-12-21 12:45:00 -08:00
Gyuho Lee
096c947159 Merge pull request #9024 from gyuho/snapshot-doc
clientv3: document context to "Snapshot" API
2017-12-21 12:44:40 -08:00
Gyuho Lee
c8dc19bf4b Merge pull request #9059 from gyuho/aci-build
*: deprecate ACI for v3.4 release cycle
2017-12-20 16:29:00 -08:00
Gyuho Lee
4388f046db Documentation/dev-internal: remove ACI in release.md
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-20 15:36:50 -08:00
Gyuho Lee
3518351a24 scripts: remove ACI build scripts
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-20 15:35:11 -08:00
Gyuho Lee
2110b210c7 CHANGELOG: fix typo in code change
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-20 14:31:35 -08:00
Gyuho Lee
70cca45824 *: update release upgrade test versions
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-20 14:20:52 -08:00
Gyuho Lee
0f6a523ee0 version: bump up to 3.3.0+git
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-20 13:49:29 -08:00
Gyuho Lee
e833b7c2d8 clientv3: document context to "Snapshot" API
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-18 17:03:18 -08:00
Gyuho Lee
b456452240 words: whitelist "statusError"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-18 17:03:18 -08:00
Gyuho Lee
931dfd7da8 etcd-dump-logs: take data-dir as argument, add TODO
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-18 14:20:56 -08:00
Gyuho Lee
af4d4ab16a tools/etcd-dump-db: add "iterate-bucket --decode" flag
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
2017-12-18 14:20:52 -08:00
koko990
2ee9f0f95b grpc_naming.md: improve docs invoke grpc naming by balance 2017-10-18 19:15:52 +08:00
gladiator
8597361f01 raft: fix Pre-Vote migration 2017-09-09 09:12:39 +08:00
1909 changed files with 289563 additions and 205750 deletions

View File

@@ -1 +0,0 @@
.git

View File

@@ -1,7 +1,2 @@
# Bug reporting
A good bug report has some very specific qualities, so please read over our short document on [reporting bugs][report_bugs] before submitting a bug report.
To ask a question, go ahead and ignore this.
[report_bugs]: https://github.com/coreos/etcd/blob/master/Documentation/reporting_bugs.md
Please read https://github.com/coreos/etcd/blob/master/Documentation/reporting_bugs.md.

View File

@@ -1,5 +1,2 @@
# Contributing guidelines
Please read our [contribution workflow][contributing] before submitting a pull request.
[contributing]: https://github.com/coreos/etcd/blob/master/CONTRIBUTING.md#contribution-flow
Please read https://github.com/coreos/etcd/blob/master/CONTRIBUTING.md#contribution-flow.

24
.gitignore vendored
View File

@@ -1,20 +1,34 @@
/agent-*
/coverage
/covdir
/docs
/gopath
/gopath.proto
/go-bindata
/release
/machine*
/bin
.vagrant
*.etcd
*.log
/etcd
*.swp
/hack/insta-discovery/.env
*.coverprofile
*.test
hack/tls-setup/certs
.idea
# TODO: use dep prune
# https://github.com/golang/dep/issues/120#issuecomment-306518546
vendor/**/*
!vendor/**/
!vendor/**/*.go
!vendor/**/*.c
!vendor/**/*.cpp
!vendor/**/*.s
!vendor/**/COPYING*
!vendor/**/PATENTS*
!vendor/**/NOTICE*
!vendor/**/Licence*
!vendor/**/License*
!vendor/**/LICENCE*
!vendor/**/LICENSE*
vendor/**/*_test.go
*.bak

1
.godir
View File

@@ -1 +0,0 @@
github.com/coreos/etcd

View File

@@ -6,10 +6,8 @@ sudo: required
services: docker
go:
- 1.12.12
env:
- GO111MODULE=on
- 1.10.3
- tip
notifications:
on_success: never
@@ -17,50 +15,116 @@ notifications:
env:
matrix:
- TARGET=linux-amd64-fmt
- TARGET=linux-amd64-integration-1-cpu
- TARGET=linux-amd64-integration-2-cpu
- TARGET=linux-amd64-integration-4-cpu
- TARGET=linux-amd64-functional
- TARGET=linux-amd64-unit
- TARGET=linux-amd64-e2e
- TARGET=all-build
- TARGET=linux-amd64-grpcproxy
- TARGET=linux-amd64-coverage
- TARGET=linux-amd64-fmt-unit-go-tip
- TARGET=linux-386-unit
matrix:
fast_finish: true
allow_failures:
- go: 1.12.12
- go: 1.10.3
env: TARGET=linux-amd64-grpcproxy
- go: 1.10.3
env: TARGET=linux-amd64-coverage
- go: tip
env: TARGET=linux-amd64-fmt-unit-go-tip
- go: 1.10.3
env: TARGET=linux-386-unit
exclude:
- go: tip
env: TARGET=linux-amd64-fmt
- go: tip
env: TARGET=linux-amd64-integration-1-cpu
- go: tip
env: TARGET=linux-amd64-integration-2-cpu
- go: tip
env: TARGET=linux-amd64-integration-4-cpu
- go: tip
env: TARGET=linux-amd64-functional
- go: tip
env: TARGET=linux-amd64-unit
- go: tip
env: TARGET=all-build
- go: tip
env: TARGET=linux-amd64-grpcproxy
- go: tip
env: TARGET=linux-amd64-coverage
- go: 1.10.3
env: TARGET=linux-amd64-fmt-unit-go-tip
- go: tip
env: TARGET=linux-386-unit
before_install:
- if [[ $TRAVIS_GO_VERSION == 1.* ]]; then docker pull gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION}; fi
install:
- go get -t -v -d ./...
- go get -t -d ./...
script:
- echo "TRAVIS_GO_VERSION=${TRAVIS_GO_VERSION}"
- >
case "${TARGET}" in
linux-amd64-fmt)
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=amd64 PASSES='fmt bom dep' ./test"
;;
linux-amd64-integration-1-cpu)
GOARCH=amd64 CPU=1 PASSES='integration' ./test
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=amd64 CPU=1 PASSES='integration' ./test"
;;
linux-amd64-integration-2-cpu)
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=amd64 CPU=2 PASSES='integration' ./test"
;;
linux-amd64-integration-4-cpu)
GOARCH=amd64 CPU=4 PASSES='integration' ./test
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=amd64 CPU=4 PASSES='integration' ./test"
;;
linux-amd64-functional)
./build && GOARCH=amd64 PASSES='functional' ./test
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "./build && GOARCH=amd64 PASSES='functional' ./test"
;;
linux-amd64-unit)
./build && GOARCH=amd64 PASSES='unit' ./test
;;
linux-amd64-e2e)
GOARCH=amd64 PASSES='build release e2e' MANUAL_VER=v3.3.13 ./test
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=amd64 PASSES='unit' ./test"
;;
all-build)
GOARCH=386 PASSES='build' ./test \
&& GO_BUILD_FLAGS='-v' GOOS=darwin GOARCH=amd64 ./build \
&& GO_BUILD_FLAGS='-v' GOARCH=arm ./build \
&& GO_BUILD_FLAGS='-v' GOARCH=arm64 ./build \
&& GO_BUILD_FLAGS='-v' GOARCH=ppc64le ./build
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=amd64 PASSES='build' ./test \
&& GOARCH=386 PASSES='build' ./test \
&& GO_BUILD_FLAGS='-v' GOOS=darwin GOARCH=amd64 ./build \
&& GO_BUILD_FLAGS='-v' GOOS=windows GOARCH=amd64 ./build \
&& GO_BUILD_FLAGS='-v' GOARCH=arm ./build \
&& GO_BUILD_FLAGS='-v' GOARCH=arm64 ./build \
&& GO_BUILD_FLAGS='-v' GOARCH=ppc64le ./build"
;;
linux-amd64-grpcproxy)
sudo HOST_TMP_DIR=/tmp TEST_OPTS="PASSES='build grpcproxy'" make docker-test
;;
linux-amd64-coverage)
sudo HOST_TMP_DIR=/tmp make docker-test-coverage
;;
linux-amd64-fmt-unit-go-tip)
GOARCH=amd64 PASSES='fmt unit' ./test
;;
linux-386-unit)
GOARCH=386 ./build && GOARCH=386 PASSES='unit' ./test
docker run --rm \
--volume=`pwd`:/go/src/github.com/coreos/etcd gcr.io/etcd-development/etcd-test:go${TRAVIS_GO_VERSION} \
/bin/bash -c "GOARCH=386 PASSES='unit' ./test"
;;
esac

67
.words
View File

@@ -8,7 +8,10 @@ MiB
ResourceExhausted
RPC
RPCs
TODO
WithRequireLeader
InfoLevel
args
backoff
blackhole
blackholed
@@ -17,19 +20,25 @@ cancelation
cluster_proxy
defragment
defragmenting
deleter
dev
/dev/null
dev/null
errClientDisconnected
etcd
gRPC
goroutine
goroutines
healthcheck
hostname
iff
inflight
keepalive
hasleader
racey
keepalives
keyspace
linearization
liveness
linearized
localhost
mutex
prefetching
@@ -37,10 +46,60 @@ protobuf
prometheus
rafthttp
repin
rpc
serializable
statusError
teardown
too_many_pings
transactional
uncontended
unprefixed
unlisting
WithDialer
nondeterministically
atomics
transferee
Balancer
lexicographically
lexically
accessors
unbuffered
nils
reconnection
mutators
ConsistentIndexGetter
OutputWALDir
WAL
consistentIndex
todo
saveWALAndSnap
subconns
nop
SubConns
DNS
passthrough
ccBalancerWrapper
rebalanced
addrConns
subConn
TestBalancerDoNotBlockOnClose
middleware
clusterName
jitter
FIXME
retriable
github
retriable
jitter
WithBackoff
BackoffLinearWithJitter
jitter
WithMax
ServerStreams
BidiStreams
transientFailure
BackoffFunc
CallOptions
__lostleader
ErrConnClosing

10
CHANGELOG-2.3.md Normal file
View File

@@ -0,0 +1,10 @@
## [v2.3.8](https://github.com/coreos/etcd/releases/tag/v2.3.8) (2017-02-17)
See [code changes](https://github.com/coreos/etcd/compare/v2.3.7...v2.3.8).
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).

203
CHANGELOG-3.0.md Normal file
View File

@@ -0,0 +1,203 @@
## [v3.0.16](https://github.com/coreos/etcd/releases/tag/v3.0.16) (2016-11-13)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.15...v3.0.16) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.4*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.15](https://github.com/coreos/etcd/releases/tag/v3.0.15) (2016-11-11)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.14...v3.0.15) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Fixed
- Fix cancel watch request with wrong range end.
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.14](https://github.com/coreos/etcd/releases/tag/v3.0.14) (2016-11-04)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.13...v3.0.14) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Added
- v3 `etcdctl migrate` command now supports `--no-ttl` flag to discard keys on transform.
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.13](https://github.com/coreos/etcd/releases/tag/v3.0.13) (2016-10-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.12...v3.0.13) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.12](https://github.com/coreos/etcd/releases/tag/v3.0.12) (2016-10-07)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.11...v3.0.12) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.11](https://github.com/coreos/etcd/releases/tag/v3.0.11) (2016-10-07)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.10...v3.0.11) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Added
- Server returns previous key-value (optional)
- `clientv3.WithPrevKV` option
- v3 etcdctl `put,watch,del --prev-kv` flag
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.10](https://github.com/coreos/etcd/releases/tag/v3.0.10) (2016-09-23)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.9...v3.0.10) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.9](https://github.com/coreos/etcd/releases/tag/v3.0.9) (2016-09-15)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.8...v3.0.9) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Added
- Warn on domain names on listen URLs (v3.2 will reject domain names).
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.8](https://github.com/coreos/etcd/releases/tag/v3.0.8) (2016-09-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.7...v3.0.8) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Other
- Allow only IP addresses in listen URLs (domain names are rejected).
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.7](https://github.com/coreos/etcd/releases/tag/v3.0.7) (2016-08-31)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.6...v3.0.7) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Other
- SRV records only allow A records (RFC 2052).
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.6](https://github.com/coreos/etcd/releases/tag/v3.0.6) (2016-08-19)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.5...v3.0.6) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.5](https://github.com/coreos/etcd/releases/tag/v3.0.5) (2016-08-19)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.4...v3.0.5) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Other
- SRV records (e.g., infra1.example.com) must match the discovery domain (i.e., example.com) if no custom certificate authority is given.
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.4](https://github.com/coreos/etcd/releases/tag/v3.0.4) (2016-07-27)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.3...v3.0.4) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Added
- v2 `etcdctl ls` command now supports `--output=json`.
- Add /var/lib/etcd directory to etcd official Docker image.
### Other
- v2 auth can now use common name from TLS certificate when `--client-cert-auth` is enabled.
### Go
- Compile with [*Go 1.6.3*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.3](https://github.com/coreos/etcd/releases/tag/v3.0.3) (2016-07-15)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.2...v3.0.3) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Other
- Revert Dockerfile to use `CMD`, instead of `ENTRYPOINT`, to support `etcdctl` run.
- Docker commands for v3.0.2 won't work without specifying executable binary paths.
- v3 etcdctl default endpoints are now `127.0.0.1:2379`.
### Go
- Compile with [*Go 1.6.2*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.2](https://github.com/coreos/etcd/releases/tag/v3.0.2) (2016-07-08)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.1...v3.0.2) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Other
- Dockerfile uses `ENTRYPOINT`, instead of `CMD`, to run etcd without binary path specified.
### Go
- Compile with [*Go 1.6.2*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.1](https://github.com/coreos/etcd/releases/tag/v3.0.1) (2016-07-01)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.0...v3.0.1) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.2*](https://golang.org/doc/devel/release.html#go1.6).
## [v3.0.0](https://github.com/coreos/etcd/releases/tag/v3.0.0) (2016-06-30)
See [code changes](https://github.com/coreos/etcd/compare/v2.3.0...v3.0.0) and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_0.md).**
### Go
- Compile with [*Go 1.6.2*](https://golang.org/doc/devel/release.html#go1.6).

405
CHANGELOG-3.1.md Normal file
View File

@@ -0,0 +1,405 @@
Previous change logs can be found at [CHANGELOG-3.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.0.md).
## [v3.1.19](https://github.com/coreos/etcd/releases/tag/v3.1.19) (2018-07-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.18...v3.1.19) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Improved
- Improve [Raft Read Index timeout warning messages](https://github.com/coreos/etcd/pull/9897).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-1) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_go_version`](https://github.com/coreos/etcd/pull/9957) Prometheus metric.
- Add [`etcd_server_slow_read_indexes_total`](https://github.com/coreos/etcd/pull/9897) Prometheus metric.
- Add [`etcd_server_quota_backend_bytes`](https://github.com/coreos/etcd/pull/9820) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
- Add [`etcd_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819) Prometheus metric.
- In addition to [`etcd_debugging_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819).
- Add [`etcd_mvcc_db_total_size_in_use_in_bytes`](https://github.com/coreos/etcd/pull/9256) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
### client v3
- Fix [lease keepalive interval updates when response queue is full](https://github.com/coreos/etcd/pull/9952).
- If `<-chan *clientv3LeaseKeepAliveResponse` from `clientv3.Lease.KeepAlive` was never consumed or channel is full, client was [sending keepalive request every 500ms](https://github.com/coreos/etcd/issues/9911) instead of expected rate of every "TTL / 3" duration.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.18](https://github.com/coreos/etcd/releases/tag/v3.1.18) (2018-06-15)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.17...v3.1.18) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-1) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_version`](https://github.com/coreos/etcd/pull/8960) Prometheus metric.
- To replace [Kubernetes `etcd-version-monitor`](https://github.com/coreos/etcd/issues/8948).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.17](https://github.com/coreos/etcd/releases/tag/v3.1.17) (2018-06-06)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.16...v3.1.17) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Fix [v3 snapshot recovery](https://github.com/coreos/etcd/issues/7628).
- A follower receives a leader snapshot to be persisted as a `[SNAPSHOT-INDEX].snap.db` file on disk.
- Now, server [ensures that the incoming snapshot be persisted on disk before loading it](https://github.com/coreos/etcd/pull/7876).
- Otherwise, index mismatch happens and triggers server-side panic (e.g. newer WAL entry with outdated snapshot index).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.16](https://github.com/coreos/etcd/releases/tag/v3.1.16) (2018-05-31)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.15...v3.1.16) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Fix [`mvcc` server panic from restore operation](https://github.com/coreos/etcd/pull/9775).
- Let's assume that a watcher had been requested with a future revision X and sent to node A that became network-partitioned thereafter. Meanwhile, cluster makes progress. Then when the partition gets removed, the leader sends a snapshot to node A. Previously if the snapshot's latest revision is still lower than the watch revision X, **etcd server panicked** during snapshot restore operation.
- Now, this server-side panic has been fixed.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.15](https://github.com/coreos/etcd/releases/tag/v3.1.15) (2018-05-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.14...v3.1.15) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Purge old [`*.snap.db` snapshot files](https://github.com/coreos/etcd/pull/7967).
- Previously, etcd did not respect `--max-snapshots` flag to purge old `*.snap.db` files.
- Now, etcd purges old `*.snap.db` files to keep maximum `--max-snapshots` number of files on disk.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.14](https://github.com/coreos/etcd/releases/tag/v3.1.14) (2018-04-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.13...v3.1.14) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-1) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_is_leader`](https://github.com/coreos/etcd/pull/9587) Prometheus metric.
### etcd server
- Add [`--initial-election-tick-advance`](https://github.com/coreos/etcd/pull/9591) flag to configure initial election tick fast-forward.
- By default, `--initial-election-tick-advance=true`, then local member fast-forwards election ticks to speed up "initial" leader election trigger.
- This benefits the case of larger election ticks. For instance, cross datacenter deployment may require longer election timeout of 10-second. If true, local node does not need wait up to 10-second. Instead, forwards its election ticks to 8-second, and have only 2-second left before leader election.
- Major assumptions are that: cluster has no active leader thus advancing ticks enables faster leader election. Or cluster already has an established leader, and rejoining follower is likely to receive heartbeats from the leader after tick advance and before election timeout.
- However, when network from leader to rejoining follower is congested, and the follower does not receive leader heartbeat within left election ticks, disruptive election has to happen thus affecting cluster availabilities.
- Now, this can be disabled by setting `--initial-election-tick-advance=false`.
- Disabling this would slow down initial bootstrap process for cross datacenter deployments. Make tradeoffs by configuring `--initial-election-tick-advance` at the cost of slow initial bootstrap.
- If single-node, it advances ticks regardless.
- Address [disruptive rejoining follower node](https://github.com/coreos/etcd/issues/9333).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.13](https://github.com/coreos/etcd/releases/tag/v3.1.13) (2018-03-29)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.12...v3.1.13) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Improved
- Adjust [election timeout on server restart](https://github.com/coreos/etcd/pull/9415) to reduce [disruptive rejoining servers](https://github.com/coreos/etcd/issues/9333).
- Previously, etcd fast-forwards election ticks on server start, with only one tick left for leader election. This is to speed up start phase, without having to wait until all election ticks elapse. Advancing election ticks is useful for cross datacenter deployments with larger election timeouts. However, it was affecting cluster availability if the last tick elapses before leader contacts the restarted node.
- Now, when etcd restarts, it adjusts election ticks with more than one tick left, thus more time for leader to prevent disruptive restart.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-1) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add missing [`etcd_network_peer_sent_failures_total` count](https://github.com/coreos/etcd/pull/9437).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.12](https://github.com/coreos/etcd/releases/tag/v3.1.12) (2018-03-08)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.11...v3.1.12) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Fix [`mvcc` "unsynced" watcher restore operation](https://github.com/coreos/etcd/pull/9297).
- "unsynced" watcher is watcher that needs to be in sync with events that have happened.
- That is, "unsynced" watcher is the slow watcher that was requested on old revision.
- "unsynced" watcher restore operation was not correctly populating its underlying watcher group.
- Which possibly causes [missing events from "unsynced" watchers](https://github.com/coreos/etcd/issues/9086).
- A node gets network partitioned with a watcher on a future revision, and falls behind receiving a leader snapshot after partition gets removed. When applying this snapshot, etcd watch storage moves current synced watchers to unsynced since sync watchers might have become stale during network partition. And reset synced watcher group to restart watcher routines. Previously, there was a bug when moving from synced watcher group to unsynced, thus client would miss events when the watcher was requested to the network-partitioned node.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.11](https://github.com/coreos/etcd/releases/tag/v3.1.11) (2017-11-28)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.10...v3.1.11) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- [#8411](https://github.com/coreos/etcd/issues/8411),[#8806](https://github.com/coreos/etcd/pull/8806) backport "mvcc: sending events after restore"
- [#8009](https://github.com/coreos/etcd/issues/8009),[#8902](https://github.com/coreos/etcd/pull/8902) backport coreos/bbolt v1.3.1-coreos.5
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.1.10](https://github.com/coreos/etcd/releases/tag/v3.1.10) (2017-07-14)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.9...v3.1.10) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Added
- Tag docker images with minor versions.
- e.g. `docker pull quay.io/coreos/etcd:v3.1` to fetch latest v3.1 versions.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
- Fix panic on `net/http.CloseNotify`
## [v3.1.9](https://github.com/coreos/etcd/releases/tag/v3.1.9) (2017-06-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.8...v3.1.9) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Allow v2 snapshot over 512MB.
### Go
- Compile with [*Go 1.7.6*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.8](https://github.com/coreos/etcd/releases/tag/v3.1.8) (2017-05-19)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.7...v3.1.8) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.7](https://github.com/coreos/etcd/releases/tag/v3.1.7) (2017-04-28)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.6...v3.1.7) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.6](https://github.com/coreos/etcd/releases/tag/v3.1.6) (2017-04-19)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.5...v3.1.6) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Fill in Auth API response header.
- Remove auth check in Status API.
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.5](https://github.com/coreos/etcd/releases/tag/v3.1.5) (2017-03-27)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.4...v3.1.5) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd server
- Fix raft memory leak issue.
- Fix Windows file path issues.
### Other
- Add `/etc/nsswitch.conf` file to alpine-based Docker image.
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.4](https://github.com/coreos/etcd/releases/tag/v3.1.4) (2017-03-22)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.3...v3.1.4) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.3](https://github.com/coreos/etcd/releases/tag/v3.1.3) (2017-03-10)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.2...v3.1.3) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd gateway
- Fix `etcd gateway` schema handling in DNS discovery.
- Fix sd_notify behaviors in `gateway`, `grpc-proxy`.
### gRPC Proxy
- Fix sd_notify behaviors in `gateway`, `grpc-proxy`.
### Other
- Use machine default host when advertise URLs are default values(`localhost:2379,2380`) AND if listen URL is `0.0.0.0`.
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.2](https://github.com/coreos/etcd/releases/tag/v3.1.2) (2017-02-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.1...v3.1.2) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### etcd gateway
- Fix `etcd gateway` with multiple endpoints.
### Other
- Use IPv4 default host, by default (when IPv4 and IPv6 are available).
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.1](https://github.com/coreos/etcd/releases/tag/v3.1.1) (2017-02-17)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.0...v3.1.1) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Go
- Compile with [*Go 1.7.5*](https://golang.org/doc/devel/release.html#go1.7).
## [v3.1.0](https://github.com/coreos/etcd/releases/tag/v3.1.0) (2017-01-20)
See [code changes](https://github.com/coreos/etcd/compare/v3.0.0...v3.1.0) and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.1 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_1.md).**
### Improved
- Faster linearizable reads (implements Raft [read-index](https://github.com/coreos/etcd/pull/6212)).
- v3 authentication API is now stable.
### Breaking Changes
- Deprecated following gRPC metrics in favor of [go-grpc-prometheus](https://github.com/grpc-ecosystem/go-grpc-prometheus).
- `etcd_grpc_requests_total`
- `etcd_grpc_requests_failed_total`
- `etcd_grpc_active_streams`
- `etcd_grpc_unary_requests_duration_seconds`
### Dependency
- Upgrade [`github.com/ugorji/go/codec`](https://github.com/ugorji/go) to [**`ugorji/go@9c7f9b7`**](https://github.com/ugorji/go/commit/9c7f9b7a2bc3a520f7c7b30b34b7f85f47fe27b6), and [regenerate v2 `client`](https://github.com/coreos/etcd/pull/6945).
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- SRV records (e.g., infra1.example.com) must match the discovery domain (i.e., example.com) if no custom certificate authority is given.
- `TLSConfig.ServerName` is ignored with user-provided certificates for backwards compatibility; to be deprecated.
- For example, `etcd --discovery-srv=example.com` will only authenticate peers/clients when the provided certs have root domain `example.com` as an entry in Subject Alternative Name (SAN) field.
### etcd server
- Automatic leadership transfer when leader steps down.
- etcd flags
- `--strict-reconfig-check` flag is set by default.
- Add `--log-output` flag.
- Add `--metrics` flag.
- etcd uses default route IP if advertise URL is not given.
- Cluster rejects removing members if quorum will be lost.
- Discovery now has upper limit for waiting on retries.
- Warn on binding listeners through domain names; to be deprecated.
- v3.0 and v3.1 with `--auto-compaction-retention=10` run periodic compaction on v3 key-value store for every 10-hour.
- Compactor only supports periodic compaction.
- Compactor records latest revisions every 5-minute, until it reaches the first compaction period (e.g. 10-hour).
- In order to retain key-value history of last compaction period, it uses the last revision that was fetched before compaction period, from the revision records that were collected every 5-minute.
- When `--auto-compaction-retention=10`, compactor uses revision 100 for compact revision where revision 100 is the latest revision fetched from 10 hours ago.
- If compaction succeeds or requested revision has already been compacted, it resets period timer and starts over with new historical revision records (e.g. restart revision collect and compact for the next 10-hour period).
- If compaction fails, it retries in 5 minutes.
### client v3
- Add `SetEndpoints` method; update endpoints at runtime.
- Add `Sync` method; auto-update endpoints at runtime.
- Add `Lease TimeToLive` API; fetch lease information.
- replace Config.Logger field with global logger.
- Get API responses are sorted in ascending order by default.
### etcdctl v3
- Add `lease timetolive` command.
- Add `--print-value-only` flag to get command.
- Add `--dest-prefix` flag to make-mirror command.
- `get` command responses are sorted in ascending order by default.
### gRPC Proxy
- Experimental gRPC proxy feature.
### Other
- `recipes` now conform to sessions defined in `clientv3/concurrency`.
- ACI has symlinks to `/usr/local/bin/etcd*`.
### Go
- Compile with [*Go 1.7.4*](https://golang.org/doc/devel/release.html#go1.7).

665
CHANGELOG-3.2.md Normal file
View File

@@ -0,0 +1,665 @@
Previous change logs can be found at [CHANGELOG-3.1](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.1.md).
## [v3.2.24](https://github.com/coreos/etcd/releases/tag/v3.2.24) (2018-07-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.23...v3.2.24) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Improved
- Improve [Raft Read Index timeout warning messages](https://github.com/coreos/etcd/pull/9897).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_go_version`](https://github.com/coreos/etcd/pull/9957) Prometheus metric.
- Add [`etcd_server_heartbeat_send_failures_total`](https://github.com/coreos/etcd/pull/9942) Prometheus metric.
- Add [`etcd_server_slow_apply_total`](https://github.com/coreos/etcd/pull/9942) Prometheus metric.
- Add [`etcd_disk_backend_defrag_duration_seconds`](https://github.com/coreos/etcd/pull/9942) Prometheus metric.
- Add [`etcd_mvcc_hash_duration_seconds`](https://github.com/coreos/etcd/pull/9942) Prometheus metric.
- Add [`etcd_server_slow_read_indexes_total`](https://github.com/coreos/etcd/pull/9897) Prometheus metric.
- Add [`etcd_server_quota_backend_bytes`](https://github.com/coreos/etcd/pull/9820) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
- Add [`etcd_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819) Prometheus metric.
- In addition to [`etcd_debugging_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819).
- Add [`etcd_mvcc_db_total_size_in_use_in_bytes`](https://github.com/coreos/etcd/pull/9256) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_server_quota_backend_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
### gRPC Proxy
- Add [flags for specifying TLS for connecting to proxy](https://github.com/coreos/etcd/pull/9894):
- Add `grpc-proxy start --cert-file`, `grpc-proxy start --key-file` and `grpc-proxy start --trusted-ca-file` flags.
- Add [`grpc-proxy start --metrics-addr` flag for specifying a separate metrics listen address](https://github.com/coreos/etcd/pull/9894).
### client v3
- Fix [lease keepalive interval updates when response queue is full](https://github.com/coreos/etcd/pull/9952).
- If `<-chan *clientv3LeaseKeepAliveResponse` from `clientv3.Lease.KeepAlive` was never consumed or channel is full, client was [sending keepalive request every 500ms](https://github.com/coreos/etcd/issues/9911) instead of expected rate of every "TTL / 3" duration.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.23](https://github.com/coreos/etcd/releases/tag/v3.2.23) (2018-06-15)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.22...v3.2.23) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Improved
- Improve [slow request apply warning log](https://github.com/coreos/etcd/pull/9288).
- e.g. `read-only range request "key:\"/a\" range_end:\"/b\" " with result "range_response_count:3 size:96" took too long (97.966µs) to execute`.
- Redact [request value field](https://github.com/coreos/etcd/pull/9822).
- Provide [response size](https://github.com/coreos/etcd/pull/9826).
- Add [backoff on watch retries on transient errors](https://github.com/coreos/etcd/pull/9840).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_version`](https://github.com/coreos/etcd/pull/8960) Prometheus metric.
- To replace [Kubernetes `etcd-version-monitor`](https://github.com/coreos/etcd/issues/8948).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.22](https://github.com/coreos/etcd/releases/tag/v3.2.22) (2018-06-06)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.21...v3.2.22) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Security, Authentication
- Support TLS cipher suite whitelisting.
- To block [weak cipher suites](https://github.com/coreos/etcd/issues/8320).
- TLS handshake fails when client hello is requested with invalid cipher suites.
- Add [`etcd --cipher-suites`](https://github.com/coreos/etcd/pull/9801) flag.
- If empty, Go auto-populates the list.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.21](https://github.com/coreos/etcd/releases/tag/v3.2.21) (2018-05-31)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.20...v3.2.21) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Fix [auth storage panic when simple token provider is disabled](https://github.com/coreos/etcd/pull/8695).
- Fix [`mvcc` server panic from restore operation](https://github.com/coreos/etcd/pull/9775).
- Let's assume that a watcher had been requested with a future revision X and sent to node A that became network-partitioned thereafter. Meanwhile, cluster makes progress. Then when the partition gets removed, the leader sends a snapshot to node A. Previously if the snapshot's latest revision is still lower than the watch revision X, **etcd server panicked** during snapshot restore operation.
- Now, this server-side panic has been fixed.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.20](https://github.com/coreos/etcd/releases/tag/v3.2.20) (2018-05-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.19...v3.2.20) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Purge old [`*.snap.db` snapshot files](https://github.com/coreos/etcd/pull/7967).
- Previously, etcd did not respect `--max-snapshots` flag to purge old `*.snap.db` files.
- Now, etcd purges old `*.snap.db` files to keep maximum `--max-snapshots` number of files on disk.
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.19](https://github.com/coreos/etcd/releases/tag/v3.2.19) (2018-04-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.18...v3.2.19) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Fix [`etcd_debugging_server_lease_expired_total`](https://github.com/coreos/etcd/pull/9557) Prometheus metric.
- Fix [race conditions in v2 server stat collecting](https://github.com/coreos/etcd/pull/9562).
- Add [`etcd_server_is_leader`](https://github.com/coreos/etcd/pull/9587) Prometheus metric.
### Security, Authentication
- Fix [TLS reload](https://github.com/coreos/etcd/pull/9570) when [certificate SAN field only includes IP addresses but no domain names](https://github.com/coreos/etcd/issues/9541).
- In Go, server calls `(*tls.Config).GetCertificate` for TLS reload if and only if server's `(*tls.Config).Certificates` field is not empty, or `(*tls.ClientHelloInfo).ServerName` is not empty with a valid SNI from the client. Previously, etcd always populates `(*tls.Config).Certificates` on the initial client TLS handshake, as non-empty. Thus, client was always expected to supply a matching SNI in order to pass the TLS verification and to trigger `(*tls.Config).GetCertificate` to reload TLS assets.
- However, a certificate whose SAN field does [not include any domain names but only IP addresses](https://github.com/coreos/etcd/issues/9541) would request `*tls.ClientHelloInfo` with an empty `ServerName` field, thus failing to trigger the TLS reload on initial TLS handshake; this becomes a problem when expired certificates need to be replaced online.
- Now, `(*tls.Config).Certificates` is created empty on initial TLS client handshake, first to trigger `(*tls.Config).GetCertificate`, and then to populate rest of the certificates on every new TLS connection, even when client SNI is empty (e.g. cert only includes IPs).
### etcd server
- Add [`etcd --initial-election-tick-advance`](https://github.com/coreos/etcd/pull/9591) flag to configure initial election tick fast-forward.
- By default, `etcd --initial-election-tick-advance=true`, then local member fast-forwards election ticks to speed up "initial" leader election trigger.
- This benefits the case of larger election ticks. For instance, cross datacenter deployment may require longer election timeout of 10-second. If true, local node does not need wait up to 10-second. Instead, forwards its election ticks to 8-second, and have only 2-second left before leader election.
- Major assumptions are that: cluster has no active leader thus advancing ticks enables faster leader election. Or cluster already has an established leader, and rejoining follower is likely to receive heartbeats from the leader after tick advance and before election timeout.
- However, when network from leader to rejoining follower is congested, and the follower does not receive leader heartbeat within left election ticks, disruptive election has to happen thus affecting cluster availabilities.
- Now, this can be disabled by setting `--initial-election-tick-advance=false`.
- Disabling this would slow down initial bootstrap process for cross datacenter deployments. Make tradeoffs by configuring `--initial-election-tick-advance` at the cost of slow initial bootstrap.
- If single-node, it advances ticks regardless.
- Address [disruptive rejoining follower node](https://github.com/coreos/etcd/issues/9333).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.18](https://github.com/coreos/etcd/releases/tag/v3.2.18) (2018-03-29)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.17...v3.2.18) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Improved
- Adjust [election timeout on server restart](https://github.com/coreos/etcd/pull/9415) to reduce [disruptive rejoining servers](https://github.com/coreos/etcd/issues/9333).
- Previously, etcd fast-forwards election ticks on server start, with only one tick left for leader election. This is to speed up start phase, without having to wait until all election ticks elapse. Advancing election ticks is useful for cross datacenter deployments with larger election timeouts. However, it was affecting cluster availability if the last tick elapses before leader contacts the restarted node.
- Now, when etcd restarts, it adjusts election ticks with more than one tick left, thus more time for leader to prevent disruptive restart.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add missing [`etcd_network_peer_sent_failures_total` count](https://github.com/coreos/etcd/pull/9437).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.17](https://github.com/coreos/etcd/releases/tag/v3.2.17) (2018-03-08)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.16...v3.2.17) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Fix [server panic on invalid Election Proclaim/Resign HTTP(S) requests](https://github.com/coreos/etcd/pull/9379).
- Previously, wrong-formatted HTTP requests to Election API could trigger panic in etcd server.
- e.g. `curl -L http://localhost:2379/v3/election/proclaim -X POST -d '{"value":""}'`, `curl -L http://localhost:2379/v3/election/resign -X POST -d '{"value":""}'`.
- Prevent [overflow by large `TTL` values for `Lease` `Grant`](https://github.com/coreos/etcd/pull/9399).
- `TTL` parameter to `Grant` request is unit of second.
- Leases with too large `TTL` values exceeding `math.MaxInt64` [expire in unexpected ways](https://github.com/coreos/etcd/issues/9374).
- Server now returns `rpctypes.ErrLeaseTTLTooLarge` to client, when the requested `TTL` is larger than *9,000,000,000 seconds* (which is >285 years).
- Again, etcd `Lease` is meant for short-periodic keepalives or sessions, in the range of seconds or minutes. Not for hours or days!
- Enable etcd server [`raft.Config.CheckQuorum` when starting with `ForceNewCluster`](https://github.com/coreos/etcd/pull/9347).
### Proxy v2
- Fix [v2 proxy leaky HTTP requests](https://github.com/coreos/etcd/pull/9336).
### Go
- Compile with [*Go 1.8.7*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.16](https://github.com/coreos/etcd/releases/tag/v3.2.16) (2018-02-12)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.15...v3.2.16) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Fix [`mvcc` "unsynced" watcher restore operation](https://github.com/coreos/etcd/pull/9297).
- "unsynced" watcher is watcher that needs to be in sync with events that have happened.
- That is, "unsynced" watcher is the slow watcher that was requested on old revision.
- "unsynced" watcher restore operation was not correctly populating its underlying watcher group.
- Which possibly causes [missing events from "unsynced" watchers](https://github.com/coreos/etcd/issues/9086).
- A node gets network partitioned with a watcher on a future revision, and falls behind receiving a leader snapshot after partition gets removed. When applying this snapshot, etcd watch storage moves current synced watchers to unsynced since sync watchers might have become stale during network partition. And reset synced watcher group to restart watcher routines. Previously, there was a bug when moving from synced watcher group to unsynced, thus client would miss events when the watcher was requested to the network-partitioned node.
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.15](https://github.com/coreos/etcd/releases/tag/v3.2.15) (2018-01-22)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.14...v3.2.15) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Prevent [server panic from member update/add](https://github.com/coreos/etcd/pull/9174) with [wrong scheme URLs](https://github.com/coreos/etcd/issues/9173).
- Log [user context cancel errors on stream APIs in debug level with TLS](https://github.com/coreos/etcd/pull/9178).
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.14](https://github.com/coreos/etcd/releases/tag/v3.2.14) (2018-01-11)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.13...v3.2.14) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Improved
- Log [user context cancel errors on stream APIs in debug level](https://github.com/coreos/etcd/pull/9105).
### etcd server
- Fix [`mvcc/backend.defragdb` nil-pointer dereference on create bucket failure](https://github.com/coreos/etcd/pull/9119).
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.13](https://github.com/coreos/etcd/releases/tag/v3.2.13) (2018-01-02)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.12...v3.2.13) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Remove [verbose error messages on stream cancel and gRPC info-level logs](https://github.com/coreos/etcd/pull/9080) in server-side.
- Fix [gRPC server panic on `GracefulStop` TLS-enabled server](https://github.com/coreos/etcd/pull/8987).
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.12](https://github.com/coreos/etcd/releases/tag/v3.2.12) (2017-12-20)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.11...v3.2.12) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Dependency
- Upgrade [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases/tag) from [**`v1.7.4`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.4) to [**`v1.7.5`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.5).
- Upgrade [`github.com/grpc-ecosystem/grpc-gateway`](https://github.com/grpc-ecosystem/grpc-gateway/releases) from [**`v1.3`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.3) to [**`v1.3.0`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.3.0).
### etcd server
- Fix [error message of `Revision` compactor](https://github.com/coreos/etcd/pull/8999) in server-side.
### client v3
- Add [`MaxCallSendMsgSize` and `MaxCallRecvMsgSize`](https://github.com/coreos/etcd/pull/9047) fields to [`clientv3.Config`](https://godoc.org/github.com/coreos/etcd/clientv3#Config).
- Fix [exceeded response size limit error in client-side](https://github.com/coreos/etcd/issues/9043).
- Address [kubernetes#51099](https://github.com/kubernetes/kubernetes/issues/51099).
- In previous versions(v3.2.10, v3.2.11), client response size was limited to only 4 MiB.
- `MaxCallSendMsgSize` default value is 2 MiB, if not configured.
- `MaxCallRecvMsgSize` default value is `math.MaxInt32`, if not configured.
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.11](https://github.com/coreos/etcd/releases/tag/v3.2.11) (2017-12-05)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.10...v3.2.11) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Dependency
- Upgrade [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases/tag) from [**`v1.7.3`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.3) to [**`v1.7.4`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.4).
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- Log [more details on TLS handshake failures](https://github.com/coreos/etcd/pull/8952/files).
### client v3
- Fix racey grpc-go's server handler transport `WriteStatus` call to prevent [TLS-enabled etcd server crash](https://github.com/coreos/etcd/issues/8904).
- Add [gRPC RPC failure warnings](https://github.com/coreos/etcd/pull/8939) to help debug such issues in the future.
### Documentation
- Remove `--listen-metrics-urls` flag in monitoring document (non-released in `v3.2.x`, planned for `v3.3.x`).
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.10](https://github.com/coreos/etcd/releases/tag/v3.2.10) (2017-11-16)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.9...v3.2.10) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Dependency
- Upgrade [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases/tag) from [**`v1.2.1`**](https://github.com/grpc/grpc-go/releases/tag/v1.2.1) to [**`v1.7.3`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.3).
- Upgrade [`github.com/grpc-ecosystem/grpc-gateway`](https://github.com/grpc-ecosystem/grpc-gateway/releases) from [**`v1.2.0`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.2.0) to [**`v1.3`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.3).
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- Revert [discovery SRV auth `ServerName` with `*.{ROOT_DOMAIN}`](https://github.com/coreos/etcd/pull/8651) to support non-wildcard subject alternative names in the certs (see [issue #8445](https://github.com/coreos/etcd/issues/8445) for more contexts).
- For instance, `etcd --discovery-srv=etcd.local` will only authenticate peers/clients when the provided certs have root domain `etcd.local` (**not `*.etcd.local`**) as an entry in Subject Alternative Name (SAN) field.
### etcd server
- Replace backend key-value database `boltdb/bolt` with [`coreos/bbolt`](https://github.com/coreos/bbolt/releases) to address [backend database size issue](https://github.com/coreos/etcd/issues/8009).
### client v3
- Rewrite balancer to handle [network partitions](https://github.com/coreos/etcd/issues/8711).
### Go
- Compile with [*Go 1.8.5*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.9](https://github.com/coreos/etcd/releases/tag/v3.2.9) (2017-10-06)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.8...v3.2.9) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- Update `golang.org/x/crypto/bcrypt` (see [golang/crypto@6c586e1](https://github.com/golang/crypto/commit/6c586e17d90a7d08bbbc4069984180dce3b04117)).
- Fix discovery SRV bootstrapping to [authenticate `ServerName` with `*.{ROOT_DOMAIN}`](https://github.com/coreos/etcd/pull/8651), in order to support sub-domain wildcard matching (see [issue #8445](https://github.com/coreos/etcd/issues/8445) for more contexts).
- For instance, `etcd --discovery-srv=etcd.local` will only authenticate peers/clients when the provided certs have root domain `*.etcd.local` as an entry in Subject Alternative Name (SAN) field.
### Go
- Compile with [*Go 1.8.4*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.8](https://github.com/coreos/etcd/releases/tag/v3.2.8) (2017-09-29)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.7...v3.2.8) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### client v2
- Fix v2 client failover to next endpoint on mutable operation.
### gRPC Proxy
- Handle [`KeysOnly` flag](https://github.com/coreos/etcd/pull/8552).
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.7](https://github.com/coreos/etcd/releases/tag/v3.2.7) (2017-09-01)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.6...v3.2.7) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Security, Authentication
- Fix [server-side auth so concurrent auth operations do not return old revision error](https://github.com/coreos/etcd/pull/8306).
### client v3
- Fix [`concurrency/stm` Put with serializable snapshot](https://github.com/coreos/etcd/pull/8439).
- Use store revision from first fetch to resolve write conflicts instead of modified revision.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.6](https://github.com/coreos/etcd/releases/tag/v3.2.6) (2017-08-21)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.5...v3.2.6) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Fix watch restore from snapshot.
- Fix multiple URLs for `--listen-peer-urls` flag.
- Add `--enable-pprof` flag to etcd configuration file format.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Fix `etcd_debugging_mvcc_keys_total` inconsistency.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.5](https://github.com/coreos/etcd/releases/tag/v3.2.5) (2017-08-04)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.4...v3.2.5) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcdctl v3
- Return non-zero exit code on unhealthy `endpoint health`.
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- [Server supports reverse-lookup on wildcard DNS `SAN`](https://github.com/coreos/etcd/pull/8281). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server first reverse-lookups the remote IP address to get a list of names mapping to that address (e.g. `nslookup IPADDR`). Then accepts the connection if those names have a matching name with peer cert's DNS names (either by exact or wildcard match). If none is matched, server forward-lookups each DNS entry in peer cert (e.g. look up `example.default.svc` when the entry is `*.example.default.svc`), and accepts connection only when the host's resolved addresses have the matching IP address with the peer's remote IP address. For example, peer B's CSR (with `cfssl`) SAN field is `["*.example.default.svc", "*.example.default.svc.cluster.local"]` when peer B's remote IP address is `10.138.0.2`. When peer B tries to join the cluster, peer A reverse-lookup the IP `10.138.0.2` to get the list of host names. And either exact or wildcard match the host names with peer B's cert DNS names in Subject Alternative Name (SAN) field. If none of reverse/forward lookups worked, it returns an error `"tls: "10.138.0.2" does not match any of DNSNames ["*.example.default.svc","*.example.default.svc.cluster.local"]`. See [issue#8268](https://github.com/coreos/etcd/issues/8268) for more detail.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Fix unreachable `/metrics` endpoint when `--enable-v2=false`.
### gRPC Proxy
- Handle [`PrevKv` flag](https://github.com/coreos/etcd/pull/8366).
### Other
- Add container registry `gcr.io/etcd-development/etcd`.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.4](https://github.com/coreos/etcd/releases/tag/v3.2.4) (2017-07-19)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.3...v3.2.4) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Do not block on active client stream when stopping server
### gRPC proxy
- Fix gRPC proxy Snapshot RPC error handling
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.3](https://github.com/coreos/etcd/releases/tag/v3.2.3) (2017-07-14)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.2...v3.2.3) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### client v3
- Let clients establish unlimited streams
### Other
- Tag docker images with minor versions
- e.g. `docker pull quay.io/coreos/etcd:v3.2` to fetch latest v3.2 versions
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.2](https://github.com/coreos/etcd/releases/tag/v3.2.2) (2017-07-07)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.1...v3.2.2) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Improved
- Rate-limit lease revoke on expiration.
- Extend leases on promote to avoid queueing effect on lease expiration.
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- [Server accepts connections if IP matches, without checking DNS entries](https://github.com/coreos/etcd/pull/8223). For instance, if peer cert contains IP addresses and DNS names in Subject Alternative Name (SAN) field, and the remote IP address matches one of those IP addresses, server just accepts connection without further checking the DNS names. For example, peer B's CSR (with `cfssl`) SAN field is `["invalid.domain", "10.138.0.2"]` when peer B's remote IP address is `10.138.0.2` and `invalid.domain` is a invalid host. When peer B tries to join the cluster, peer A successfully authenticates B, since Subject Alternative Name (SAN) field has a valid matching IP address. See [issue#8206](https://github.com/coreos/etcd/issues/8206) for more detail.
### etcd server
- Accept connection with matched IP SAN but no DNS match.
- Don't check DNS entries in certs if there's a matching IP.
### gRPC gateway
- Use user-provided listen address to connect to gRPC gateway.
- `net.Listener` rewrites IPv4 0.0.0.0 to IPv6 [::], breaking IPv6 disabled hosts.
- Only v3.2.0, v3.2.1 are affected.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.1](https://github.com/coreos/etcd/releases/tag/v3.2.1) (2017-06-23)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.0...v3.2.1) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### etcd server
- Fix backend database in-memory index corruption issue on restore (only 3.2.0 is affected).
### gRPC gateway
- Fix Txn marshaling.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Fix backend database size debugging metrics.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).
## [v3.2.0](https://github.com/coreos/etcd/releases/tag/v3.2.0) (2017-06-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.1.0...v3.2.0) and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.2 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_2.md).**
### Improved
- Improve backend read concurrency.
### Breaking Changes
- Increased [`--snapshot-count` default value from 10,000 to 100,000](https://github.com/coreos/etcd/pull/7160).
- Higher snapshot count means it holds Raft entries in memory for longer before discarding old entries.
- It is a trade-off between less frequent snapshotting and [higher memory usage](https://github.com/kubernetes/kubernetes/issues/60589#issuecomment-371977156).
- User lower `--snapshot-count` value for lower memory usage.
- User higher `--snapshot-count` value for better availabilities of slow followers (less frequent snapshots from leader).
- `clientv3.Lease.TimeToLive` returns `LeaseTimeToLiveResponse.TTL == -1` on lease not found.
- `clientv3.NewFromConfigFile` is moved to `clientv3/yaml.NewConfig`.
- `embed.Etcd.Peers` field is now `[]*peerListener`.
- Rejects domains names for `--listen-peer-urls` and `--listen-client-urls` (3.1 only prints out warnings), since [domain name is invalid for network interface binding](https://github.com/coreos/etcd/issues/6336).
### Dependency
- Upgrade [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases) from [**`v1.0.4`**](https://github.com/grpc/grpc-go/releases/tag/v1.0.4) to [**`v1.2.1`**](https://github.com/grpc/grpc-go/releases/tag/v1.2.1).
- Upgrade [`github.com/grpc-ecosystem/grpc-gateway`](https://github.com/grpc-ecosystem/grpc-gateway/releases) to [**`v1.2.0`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.2.0).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-2) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_disk_backend_snapshot_duration_seconds`](https://github.com/coreos/etcd/pull/7892)
- Add `etcd_debugging_server_lease_expired_total` metrics.
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- [TLS certificates get reloaded on every client connection](https://github.com/coreos/etcd/pull/7829). This is useful when replacing expiry certs without stopping etcd servers; it can be done by overwriting old certs with new ones. Refreshing certs for every connection should not have too much overhead, but can be improved in the future, with caching layer. Example tests can be found [here](https://github.com/coreos/etcd/blob/b041ce5d514a4b4aaeefbffb008f0c7570a18986/integration/v3_grpc_test.go#L1601-L1757).
- [Server denies incoming peer certs with wrong IP `SAN`](https://github.com/coreos/etcd/pull/7687). For instance, if peer cert contains any IP addresses in Subject Alternative Name (SAN) field, server authenticates a peer only when the remote IP address matches one of those IP addresses. This is to prevent unauthorized endpoints from joining the cluster. For example, peer B's CSR (with `cfssl`) SAN field is `["*.example.default.svc", "*.example.default.svc.cluster.local", "10.138.0.27"]` when peer B's actual IP address is `10.138.0.2`, not `10.138.0.27`. When peer B tries to join the cluster, peer A will reject B with the error `x509: certificate is valid for 10.138.0.27, not 10.138.0.2`, because B's remote IP address does not match the one in Subject Alternative Name (SAN) field.
- [Server resolves TLS `DNSNames` when checking `SAN`](https://github.com/coreos/etcd/pull/7767). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server authenticates a peer only when forward-lookups (`dig b.com`) on those DNS names have matching IP with the remote IP address. For example, peer B's CSR (with `cfssl`) SAN field is `["b.com"]` when peer B's remote IP address is `10.138.0.2`. When peer B tries to join the cluster, peer A looks up the incoming host `b.com` to get the list of IP addresses (e.g. `dig b.com`). And rejects B if the list does not contain the IP `10.138.0.2`, with the error `tls: 10.138.0.2 does not match any of DNSNames ["b.com"]`.
- Auth support JWT token.
### etcd server
- RPCs
- Add Election, Lock service.
- Native client `etcdserver/api/v3client`
- client "embedded" in the server.
- Logging, monitoring
- Server warns large snapshot operations.
- Add `etcd --enable-v2` flag to enable v2 API server.
- `etcd --enable-v2=true` by default.
- Add `etcd --auth-token` flag.
- v3.2 compactor runs [every hour](https://github.com/coreos/etcd/pull/7875).
- Compactor only supports periodic compaction.
- Compactor continues to record latest revisions every 5-minute.
- For every hour, it uses the last revision that was fetched before compaction period, from the revision records that were collected every 5-minute.
- That is, for every hour, compactor discards historical data created before compaction period.
- The retention window of compaction period moves to next hour.
- For instance, when hourly writes are 100 and `--auto-compaction-retention=10`, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2 compacts revision 1000, 1100, and 1200 for every 1-hour.
- If compaction succeeds or requested revision has already been compacted, it resets period timer and removes used compacted revision from historical revision records (e.g. start next revision collect and compaction from previously collected revisions).
- If compaction fails, it retries in 5 minutes.
- Allow snapshot over 512MB.
### client v3
- STM prefetching.
- Add namespace feature.
- Add `ErrOldCluster` with server version checking.
- Translate `WithPrefix()` into `WithFromKey()` for empty key.
### etcdctl v3
- Add `check perf` command.
- Add `etcdctl --from-key` flag to role grant-permission command.
- `lock` command takes an optional command to execute.
### gRPC Proxy
- Proxy endpoint discovery.
- Namespaces.
- Coalesce lease requests.
### etcd gateway
- Support [DNS SRV priority](https://github.com/coreos/etcd/pull/7882) for [smart proxy routing](https://github.com/coreos/etcd/issues/4378).
### Other
- v3 client
- concurrency package's elections updated to match RPC interfaces.
- let client dial endpoints not in the balancer.
- Release
- Annotate acbuild with supports-systemd-notify.
- Add `nsswitch.conf` to Docker container image.
- Add ppc64le, arm64(experimental) builds.
### Go
- Compile with [*Go 1.8.3*](https://golang.org/doc/devel/release.html#go1.8).

521
CHANGELOG-3.3.md Normal file
View File

@@ -0,0 +1,521 @@
Previous change logs can be found at [CHANGELOG-3.2](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md).
## [v3.3.9](https://github.com/coreos/etcd/releases/tag/v3.3.9) (2018-07-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.8...v3.3.9) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### Improved
- Improve [Raft Read Index timeout warning messages](https://github.com/coreos/etcd/pull/9897).
### Security, Authentication
- Compile with [*Go 1.10.3*](https://golang.org/doc/devel/release.html#go1.10) to support [crypto/x509 "Name Constraints"](https://github.com/coreos/etcd/issues/9912).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-3) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_go_version`](https://github.com/coreos/etcd/pull/9957) Prometheus metric.
- Add [`etcd_server_heartbeat_send_failures_total`](https://github.com/coreos/etcd/pull/9940) Prometheus metric.
- Add [`etcd_server_slow_apply_total`](https://github.com/coreos/etcd/pull/9940) Prometheus metric.
- Add [`etcd_disk_backend_defrag_duration_seconds`](https://github.com/coreos/etcd/pull/9940) Prometheus metric.
- Add [`etcd_mvcc_hash_duration_seconds`](https://github.com/coreos/etcd/pull/9940) Prometheus metric.
- Add [`etcd_mvcc_hash_rev_duration_seconds`](https://github.com/coreos/etcd/pull/9940) Prometheus metric.
- Add [`etcd_server_slow_read_indexes_total`](https://github.com/coreos/etcd/pull/9897) Prometheus metric.
- Add [`etcd_server_quota_backend_bytes`](https://github.com/coreos/etcd/pull/9820) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
- Add [`etcd_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819) Prometheus metric.
- In addition to [`etcd_debugging_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819).
- Add [`etcd_mvcc_db_total_size_in_use_in_bytes`](https://github.com/coreos/etcd/pull/9256) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
### client v3
- Fix [lease keepalive interval updates when response queue is full](https://github.com/coreos/etcd/pull/9952).
- If `<-chan *clientv3LeaseKeepAliveResponse` from `clientv3.Lease.KeepAlive` was never consumed or channel is full, client was [sending keepalive request every 500ms](https://github.com/coreos/etcd/issues/9911) instead of expected rate of every "TTL / 3" duration.
### Go
- Compile with [*Go 1.10.3*](https://golang.org/doc/devel/release.html#go1.10).
## [v3.3.8](https://github.com/coreos/etcd/releases/tag/v3.3.8) (2018-06-15)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.7...v3.3.8) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### Improved
- Improve [slow request apply warning log](https://github.com/coreos/etcd/pull/9288).
- e.g. `read-only range request "key:\"/a\" range_end:\"/b\" " with result "range_response_count:3 size:96" took too long (97.966µs) to execute`.
- Redact [request value field](https://github.com/coreos/etcd/pull/9822).
- Provide [response size](https://github.com/coreos/etcd/pull/9826).
- Add [backoff on watch retries on transient errors](https://github.com/coreos/etcd/pull/9840).
### Go
- Compile with [*Go 1.9.7*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.7](https://github.com/coreos/etcd/releases/tag/v3.3.7) (2018-06-06)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.6...v3.3.7) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### Security, Authentication
- Support TLS cipher suite whitelisting.
- To block [weak cipher suites](https://github.com/coreos/etcd/issues/8320).
- TLS handshake fails when client hello is requested with invalid cipher suites.
- Add [`etcd --cipher-suites`](https://github.com/coreos/etcd/pull/9801) flag.
- If empty, Go auto-populates the list.
### etcdctl v3
- Fix [`etcdctl move-leader` command for TLS-enabled endpoints](https://github.com/coreos/etcd/pull/9807).
### Go
- Compile with [*Go 1.9.6*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.6](https://github.com/coreos/etcd/releases/tag/v3.3.6) (2018-05-31)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.5...v3.3.6) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### etcd server
- Allow [empty auth token](https://github.com/coreos/etcd/pull/9369).
- Previously, when auth token is an empty string, it returns [`failed to initialize the etcd server: auth: invalid auth options` error](https://github.com/coreos/etcd/issues/9349).
- Fix [auth storage panic on server lease revoke routine with JWT token](https://github.com/coreos/etcd/issues/9695).
- Fix [`mvcc` server panic from restore operation](https://github.com/coreos/etcd/pull/9775).
- Let's assume that a watcher had been requested with a future revision X and sent to node A that became network-partitioned thereafter. Meanwhile, cluster makes progress. Then when the partition gets removed, the leader sends a snapshot to node A. Previously if the snapshot's latest revision is still lower than the watch revision X, **etcd server panicked** during snapshot restore operation.
- Now, this server-side panic has been fixed.
### Go
- Compile with [*Go 1.9.6*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.5](https://github.com/coreos/etcd/releases/tag/v3.3.5) (2018-05-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.4...v3.3.5) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### etcdctl v3
- Fix [`etcdctl watch [key] [range_end] -- [exec-command…]`](https://github.com/coreos/etcd/pull/9688) parsing.
- Previously, `ETCDCTL_API=3 ./bin/etcdctl watch foo -- echo watch event received` panicked.
### Go
- Compile with [*Go 1.9.6*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.4](https://github.com/coreos/etcd/releases/tag/v3.3.4) (2018-04-24)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.3...v3.3.4) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-3) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_server_is_leader`](https://github.com/coreos/etcd/pull/9587) Prometheus metric.
- Fix [`etcd_debugging_server_lease_expired_total`](https://github.com/coreos/etcd/pull/9557) Prometheus metric.
- Fix [race conditions in v2 server stat collecting](https://github.com/coreos/etcd/pull/9562).
### Security, Authentication
- Fix [TLS reload](https://github.com/coreos/etcd/pull/9570) when [certificate SAN field only includes IP addresses but no domain names](https://github.com/coreos/etcd/issues/9541).
- In Go, server calls `(*tls.Config).GetCertificate` for TLS reload if and only if server's `(*tls.Config).Certificates` field is not empty, or `(*tls.ClientHelloInfo).ServerName` is not empty with a valid SNI from the client. Previously, etcd always populates `(*tls.Config).Certificates` on the initial client TLS handshake, as non-empty. Thus, client was always expected to supply a matching SNI in order to pass the TLS verification and to trigger `(*tls.Config).GetCertificate` to reload TLS assets.
- However, a certificate whose SAN field does [not include any domain names but only IP addresses](https://github.com/coreos/etcd/issues/9541) would request `*tls.ClientHelloInfo` with an empty `ServerName` field, thus failing to trigger the TLS reload on initial TLS handshake; this becomes a problem when expired certificates need to be replaced online.
- Now, `(*tls.Config).Certificates` is created empty on initial TLS client handshake, first to trigger `(*tls.Config).GetCertificate`, and then to populate rest of the certificates on every new TLS connection, even when client SNI is empty (e.g. cert only includes IPs).
### etcd server
- Add [`etcd --initial-election-tick-advance`](https://github.com/coreos/etcd/pull/9591) flag to configure initial election tick fast-forward.
- By default, `etcd --initial-election-tick-advance=true`, then local member fast-forwards election ticks to speed up "initial" leader election trigger.
- This benefits the case of larger election ticks. For instance, cross datacenter deployment may require longer election timeout of 10-second. If true, local node does not need wait up to 10-second. Instead, forwards its election ticks to 8-second, and have only 2-second left before leader election.
- Major assumptions are that: cluster has no active leader thus advancing ticks enables faster leader election. Or cluster already has an established leader, and rejoining follower is likely to receive heartbeats from the leader after tick advance and before election timeout.
- However, when network from leader to rejoining follower is congested, and the follower does not receive leader heartbeat within left election ticks, disruptive election has to happen thus affecting cluster availabilities.
- Now, this can be disabled by setting `--initial-election-tick-advance=false`.
- Disabling this would slow down initial bootstrap process for cross datacenter deployments. Make tradeoffs by configuring `etcd --initial-election-tick-advance` at the cost of slow initial bootstrap.
- If single-node, it advances ticks regardless.
- Address [disruptive rejoining follower node](https://github.com/coreos/etcd/issues/9333).
### Package `embed`
- Add [`embed.Config.InitialElectionTickAdvance`](https://github.com/coreos/etcd/pull/9591) to enable/disable initial election tick fast-forward.
- `embed.NewConfig()` would return `*embed.Config` with `InitialElectionTickAdvance` as true by default.
### Go
- Compile with [*Go 1.9.5*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.3](https://github.com/coreos/etcd/releases/tag/v3.3.3) (2018-03-29)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.2...v3.3.3) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### Improved
- Adjust [election timeout on server restart](https://github.com/coreos/etcd/pull/9415) to reduce [disruptive rejoining servers](https://github.com/coreos/etcd/issues/9333).
- Previously, etcd fast-forwards election ticks on server start, with only one tick left for leader election. This is to speed up start phase, without having to wait until all election ticks elapse. Advancing election ticks is useful for cross datacenter deployments with larger election timeouts. However, it was affecting cluster availability if the last tick elapses before leader contacts the restarted node.
- Now, when etcd restarts, it adjusts election ticks with more than one tick left, thus more time for leader to prevent disruptive restart.
- Adjust [periodic compaction retention window](https://github.com/coreos/etcd/pull/9485).
- e.g. `etcd --auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000).
- e.g. Previously, `etcd --auto-compaction-mode=periodic --auto-compaction-retention=72h` automatically `Compact` with 72-hour retention windown for every 7.2-hour. **Now, `Compact` happens, for every 1-hour but still with 72-hour retention window.**
- e.g. Previously, `etcd --auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown for every 3-minute. **Now, `Compact` happens, for every 30-minute but still with 30-minute retention window.**
- Periodic compactor keeps recording latest revisions for every compaction period when given period is less than 1-hour, or for every 1-hour when given compaction period is greater than 1-hour (e.g. 1-hour when `etcd --auto-compaction-mode=periodic --auto-compaction-retention=24h`).
- For every compaction period or 1-hour, compactor uses the last revision that was fetched before compaction period, to discard historical data.
- The retention window of compaction period moves for every given compaction period or hour.
- For instance, when hourly writes are 100 and `etcd --auto-compaction-mode=periodic --auto-compaction-retention=24h`, `v3.2.x`, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 2400, 2640, and 2880 for every 2.4-hour, while `v3.3.3` *or later* compacts revision 2400, 2500, 2600 for every 1-hour.
- Futhermore, when `etcd --auto-compaction-mode=periodic --auto-compaction-retention=30m` and writes per minute are about 1000, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 30000, 33000, and 36000, for every 3-minute, while `v3.3.3` *or later* compacts revision 30000, 60000, and 90000, for every 30-minute.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-3) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add missing [`etcd_network_peer_sent_failures_total` count](https://github.com/coreos/etcd/pull/9437).
### Go
- Compile with [*Go 1.9.5*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.2](https://github.com/coreos/etcd/releases/tag/v3.3.2) (2018-03-08)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.1...v3.3.2) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### etcd server
- Fix [server panic on invalid Election Proclaim/Resign HTTP(S) requests](https://github.com/coreos/etcd/pull/9379).
- Previously, wrong-formatted HTTP requests to Election API could trigger panic in etcd server.
- e.g. `curl -L http://localhost:2379/v3/election/proclaim -X POST -d '{"value":""}'`, `curl -L http://localhost:2379/v3/election/resign -X POST -d '{"value":""}'`.
- Fix [revision-based compaction retention parsing](https://github.com/coreos/etcd/pull/9339).
- Previously, `etcd --auto-compaction-mode revision --auto-compaction-retention 1` was [translated to revision retention 3600000000000](https://github.com/coreos/etcd/issues/9337).
- Now, `etcd --auto-compaction-mode revision --auto-compaction-retention 1` is correctly parsed as revision retention 1.
- Prevent [overflow by large `TTL` values for `Lease` `Grant`](https://github.com/coreos/etcd/pull/9399).
- `TTL` parameter to `Grant` request is unit of second.
- Leases with too large `TTL` values exceeding `math.MaxInt64` [expire in unexpected ways](https://github.com/coreos/etcd/issues/9374).
- Server now returns `rpctypes.ErrLeaseTTLTooLarge` to client, when the requested `TTL` is larger than *9,000,000,000 seconds* (which is >285 years).
- Again, etcd `Lease` is meant for short-periodic keepalives or sessions, in the range of seconds or minutes. Not for hours or days!
- Enable etcd server [`raft.Config.CheckQuorum` when starting with `ForceNewCluster`](https://github.com/coreos/etcd/pull/9347).
### Proxy v2
- Fix [v2 proxy leaky HTTP requests](https://github.com/coreos/etcd/pull/9336).
### Go
- Compile with [*Go 1.9.4*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.1](https://github.com/coreos/etcd/releases/tag/v3.3.1) (2018-02-12)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.0...v3.3.1) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
### Improved
- Add [warnings on requests taking too long](https://github.com/coreos/etcd/pull/9288).
- e.g. `etcdserver: read-only range request "key:\"\\000\" range_end:\"\\000\" " took too long [3.389041388s] to execute`
### etcd server
- Fix [`mvcc` "unsynced" watcher restore operation](https://github.com/coreos/etcd/pull/9281).
- "unsynced" watcher is watcher that needs to be in sync with events that have happened.
- That is, "unsynced" watcher is the slow watcher that was requested on old revision.
- "unsynced" watcher restore operation was not correctly populating its underlying watcher group.
- Which possibly causes [missing events from "unsynced" watchers](https://github.com/coreos/etcd/issues/9086).
- A node gets network partitioned with a watcher on a future revision, and falls behind receiving a leader snapshot after partition gets removed. When applying this snapshot, etcd watch storage moves current synced watchers to unsynced since sync watchers might have become stale during network partition. And reset synced watcher group to restart watcher routines. Previously, there was a bug when moving from synced watcher group to unsynced, thus client would miss events when the watcher was requested to the network-partitioned node.
### Go
- Compile with [*Go 1.9.4*](https://golang.org/doc/devel/release.html#go1.9).
## [v3.3.0](https://github.com/coreos/etcd/releases/tag/v3.3.0) (2018-02-01)
See [code changes](https://github.com/coreos/etcd/compare/v3.2.0...v3.3.0) and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.3 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_3.md).**
- [v3.3.0-rc.4](https://github.com/coreos/etcd/releases/tag/v3.3.0-rc.4) (2018-01-22), see [code changes](https://github.com/coreos/etcd/compare/v3.3.0-rc.3...v3.3.0-rc.4).
- [v3.3.0-rc.3](https://github.com/coreos/etcd/releases/tag/v3.3.0-rc.3) (2018-01-17), see [code changes](https://github.com/coreos/etcd/compare/v3.3.0-rc.2...v3.3.0-rc.3).
- [v3.3.0-rc.2](https://github.com/coreos/etcd/releases/tag/v3.3.0-rc.2) (2018-01-11), see [code changes](https://github.com/coreos/etcd/compare/v3.3.0-rc.1...v3.3.0-rc.2).
- [v3.3.0-rc.1](https://github.com/coreos/etcd/releases/tag/v3.3.0-rc.1) (2018-01-02), see [code changes](https://github.com/coreos/etcd/compare/v3.3.0-rc.0...v3.3.0-rc.1).
- [v3.3.0-rc.0](https://github.com/coreos/etcd/releases/tag/v3.3.0-rc.0) (2017-12-20), see [code changes](https://github.com/coreos/etcd/compare/v3.2.0...v3.3.0-rc.0).
### Improved
- Use [`coreos/bbolt`](https://github.com/coreos/bbolt/releases) to replace [`boltdb/bolt`](https://github.com/boltdb/bolt#project-status).
- Fix [etcd database size grows until `mvcc: database space exceeded`](https://github.com/coreos/etcd/issues/8009).
- [Support database size larger than 8GiB](https://github.com/coreos/etcd/pull/7525) (8GiB is now a suggested maximum size for normal environments)
- [Reduce memory allocation](https://github.com/coreos/etcd/pull/8428) on [Range operations](https://github.com/coreos/etcd/pull/8475).
- [Rate limit](https://github.com/coreos/etcd/pull/8099) and [randomize](https://github.com/coreos/etcd/pull/8101) lease revoke on restart or leader elections.
- Prevent [spikes in Raft proposal rate](https://github.com/coreos/etcd/issues/8096).
- Support `clientv3` balancer failover under [network faults/partitions](https://github.com/coreos/etcd/issues/8711).
- Better warning on [mismatched `etcd --initial-cluster`](https://github.com/coreos/etcd/pull/8083) flag.
- etcd compares `etcd --initial-advertise-peer-urls` against corresponding `etcd --initial-cluster` URLs with forward-lookup.
- If resolved IP addresses of `etcd --initial-advertise-peer-urls` and `etcd --initial-cluster` do not match (e.g. [due to DNS error](https://github.com/coreos/etcd/pull/9210)), etcd will exit with errors.
- v3.2 error: `etcd --initial-cluster must include s1=https://s1.test:2380 given --initial-advertise-peer-urls=https://s1.test:2380`.
- v3.3 error: `failed to resolve https://s1.test:2380 to match --initial-cluster=s1=https://s1.test:2380 (failed to resolve "https://s1.test:2380" (error ...))`.
### Breaking Changes
- Require [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases) [**`v1.7.4`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.4) or [**`v1.7.5`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.5).
- Deprecate [`metadata.Incoming/OutgoingContext`](https://github.com/coreos/etcd/pull/7896).
- Deprecate `grpclog.Logger`, upgrade to [`grpclog.LoggerV2`](https://github.com/coreos/etcd/pull/8533).
- Deprecate [`grpc.ErrClientConnTimeout`](https://github.com/coreos/etcd/pull/8505) errors in `clientv3`.
- Use [`MaxRecvMsgSize` and `MaxSendMsgSize`](https://github.com/coreos/etcd/pull/8437) to limit message size, in etcd server.
- Translate [gRPC status error in v3 client `Snapshot` API](https://github.com/coreos/etcd/pull/9038).
- v3 `etcdctl` [`lease timetolive LEASE_ID`](https://github.com/coreos/etcd/issues/9028) on expired lease now prints [`"lease LEASE_ID already expired"`](https://github.com/coreos/etcd/pull/9047).
- <=3.2 prints `"lease LEASE_ID granted with TTL(0s), remaining(-1s)"`.
- Replace [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) endpoint `/v3alpha` with [`/v3beta`](https://github.com/coreos/etcd/pull/8880).
- To deprecate [`/v3alpha`](https://github.com/coreos/etcd/issues/8125) in v3.4.
- In v3.3, `curl -L http://localhost:2379/v3alpha/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` still works as a fallback to `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'`, but `curl -L http://localhost:2379/v3alpha/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` won't work in v3.4. Use `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` instead.
- Change `etcd --auto-compaction-retention` flag to [accept string values](https://github.com/coreos/etcd/pull/8563) with [finer granularity](https://github.com/coreos/etcd/issues/8503).
- Now that `etcd --auto-compaction-retention` accepts string values, etcd configuration YAML file `auto-compaction-retention` field must be changed to `string` type.
- Previously, `--config-file etcd.config.yaml` can have `auto-compaction-retention: 24` field, now must be `auto-compaction-retention: "24"` or `auto-compaction-retention: "24h"`.
- If configured as `etcd --auto-compaction-mode periodic --auto-compaction-retention "24h"`, the time duration value for `etcd --auto-compaction-retention` flag must be valid for [`time.ParseDuration`](https://golang.org/pkg/time/#ParseDuration) function in Go.
### Dependency
- Upgrade [`boltdb/bolt`](https://github.com/boltdb/bolt#project-status) from [**`v1.3.0`**](https://github.com/boltdb/bolt/releases/tag/v1.3.0) to [`coreos/bbolt`](https://github.com/coreos/bbolt/releases) [**`v1.3.1-coreos.6`**](https://github.com/coreos/bbolt/releases/tag/v1.3.1-coreos.6).
- Upgrade [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases) from [**`v1.2.1`**](https://github.com/grpc/grpc-go/releases/tag/v1.2.1) to [**`v1.7.5`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.5).
- Upgrade [`github.com/ugorji/go/codec`](https://github.com/ugorji/go) to [**`v1.1`**](https://github.com/ugorji/go/releases/tag/v1.1), and [regenerate v2 `client`](https://github.com/coreos/etcd/pull/8721).
- Upgrade [`github.com/ugorji/go/codec`](https://github.com/ugorji/go) to [**`ugorji/go@54210f4e0`**](https://github.com/ugorji/go/commit/54210f4e076c57f351166f0ed60e67d3fca57a36), and [regenerate v2 `client`](https://github.com/coreos/etcd/pull/8574).
- Upgrade [`github.com/grpc-ecosystem/grpc-gateway`](https://github.com/grpc-ecosystem/grpc-gateway/releases) from [**`v1.2.2`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.2.2) to [**`v1.3.0`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.3.0).
- Upgrade [`golang.org/x/crypto/bcrypt`](https://github.com/golang/crypto) to [**`golang/crypto@6c586e17d`**](https://github.com/golang/crypto/commit/6c586e17d90a7d08bbbc4069984180dce3b04117).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#v3-3) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd --listen-metrics-urls`](https://github.com/coreos/etcd/pull/8242) flag for additional `/metrics` and `/health` endpoints.
- Useful for [bypassing critical APIs when monitoring etcd](https://github.com/coreos/etcd/issues/8060).
- Add [`etcd_server_version`](https://github.com/coreos/etcd/pull/8960) Prometheus metric.
- To replace [Kubernetes `etcd-version-monitor`](https://github.com/coreos/etcd/issues/8948).
- Add [`etcd_debugging_mvcc_db_compaction_keys_total`](https://github.com/coreos/etcd/pull/8280) Prometheus metric.
- Add [`etcd_debugging_server_lease_expired_total`](https://github.com/coreos/etcd/pull/8064) Prometheus metric.
- To improve [lease revoke monitoring](https://github.com/coreos/etcd/issues/8050).
- Document [Prometheus 2.0 rules](https://github.com/coreos/etcd/pull/8879).
- Initialize gRPC server [metrics with zero values](https://github.com/coreos/etcd/pull/8878).
- Fix [range/put/delete operation metrics](https://github.com/coreos/etcd/pull/8054) with transaction.
- `etcd_debugging_mvcc_range_total`
- `etcd_debugging_mvcc_put_total`
- `etcd_debugging_mvcc_delete_total`
- `etcd_debugging_mvcc_txn_total`
- Fix [`etcd_debugging_mvcc_keys_total`](https://github.com/coreos/etcd/pull/8390) on restore.
- Fix [`etcd_debugging_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/8120) on restore.
- Also change to [`prometheus.NewGaugeFunc`](https://github.com/coreos/etcd/pull/8150).
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- Add [CRL based connection rejection](https://github.com/coreos/etcd/pull/8124) to manage [revoked certs](https://github.com/coreos/etcd/issues/4034).
- Document [TLS authentication changes](https://github.com/coreos/etcd/pull/8895).
- [Server accepts connections if IP matches, without checking DNS entries](https://github.com/coreos/etcd/pull/8223). For instance, if peer cert contains IP addresses and DNS names in Subject Alternative Name (SAN) field, and the remote IP address matches one of those IP addresses, server just accepts connection without further checking the DNS names.
- [Server supports reverse-lookup on wildcard DNS `SAN`](https://github.com/coreos/etcd/pull/8281). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server first reverse-lookups the remote IP address to get a list of names mapping to that address (e.g. `nslookup IPADDR`). Then accepts the connection if those names have a matching name with peer cert's DNS names (either by exact or wildcard match). If none is matched, server forward-lookups each DNS entry in peer cert (e.g. look up `example.default.svc` when the entry is `*.example.default.svc`), and accepts connection only when the host's resolved addresses have the matching IP address with the peer's remote IP address.
- Add [`etcd --peer-cert-allowed-cn`](https://github.com/coreos/etcd/pull/8616) flag.
- To support [CommonName(CN) based auth](https://github.com/coreos/etcd/issues/8262) for inter peer connection.
- [Swap priority](https://github.com/coreos/etcd/pull/8594) of cert CommonName(CN) and username + password.
- To address ["username and password specified in the request should take priority over CN in the cert"](https://github.com/coreos/etcd/issues/8584).
- Protect [lease revoke with auth](https://github.com/coreos/etcd/pull/8031).
- Provide user's role on [auth permission error](https://github.com/coreos/etcd/pull/8164).
- Fix [auth store panic with disabled token](https://github.com/coreos/etcd/pull/8695).
### etcd server
- Add [`etcd --experimental-initial-corrupt-check`](https://github.com/coreos/etcd/pull/8554) flag to [check cluster database hashes before serving client/peer traffic](https://github.com/coreos/etcd/issues/8313).
- `etcd --experimental-initial-corrupt-check=false` by default.
- v3.4 will enable `--initial-corrupt-check=true` by default.
- Add [`etcd --experimental-corrupt-check-time`](https://github.com/coreos/etcd/pull/8420) flag to [raise corrupt alarm monitoring](https://github.com/coreos/etcd/issues/7125).
- `etcd --experimental-corrupt-check-time=0s` disabled by default.
- Add [`etcd --experimental-enable-v2v3`](https://github.com/coreos/etcd/pull/8407) flag to [emulate v2 API with v3](https://github.com/coreos/etcd/issues/6925).
- `etcd --experimental-enable-v2v3=false` by default.
- Add [`etcd --max-txn-ops`](https://github.com/coreos/etcd/pull/7976) flag to [configure maximum number operations in transaction](https://github.com/coreos/etcd/issues/7826).
- Add [`etcd --max-request-bytes`](https://github.com/coreos/etcd/pull/7968) flag to [configure maximum client request size](https://github.com/coreos/etcd/issues/7923).
- If not configured, it defaults to 1.5 MiB.
- Add [`etcd --client-crl-file`, `--peer-crl-file`](https://github.com/coreos/etcd/pull/8124) flags for [Certificate revocation list](https://github.com/coreos/etcd/issues/4034).
- Add [`etcd --peer-cert-allowed-cn`](https://github.com/coreos/etcd/pull/8616) flag to support [CN-based auth for inter-peer connection](https://github.com/coreos/etcd/issues/8262).
- Add [`etcd --listen-metrics-urls`](https://github.com/coreos/etcd/pull/8242) flag for additional `/metrics` and `/health` endpoints.
- Support [additional (non) TLS `/metrics` endpoints for a TLS-enabled cluster](https://github.com/coreos/etcd/pull/8282).
- e.g. `etcd --listen-metrics-urls=https://localhost:2378,http://localhost:9379` to serve `/metrics` and `/health` on secure port 2378 and insecure port 9379.
- Useful for [bypassing critical APIs when monitoring etcd](https://github.com/coreos/etcd/issues/8060).
- Add [`etcd --auto-compaction-mode`](https://github.com/coreos/etcd/pull/8123) flag to [support revision-based compaction](https://github.com/coreos/etcd/issues/8098).
- Change `etcd --auto-compaction-retention` flag to [accept string values](https://github.com/coreos/etcd/pull/8563) with [finer granularity](https://github.com/coreos/etcd/issues/8503).
- Now that `etcd --auto-compaction-retention` accepts string values, etcd configuration YAML file `auto-compaction-retention` field must be changed to `string` type.
- Previously, `etcd --config-file etcd.config.yaml` can have `auto-compaction-retention: 24` field, now must be `auto-compaction-retention: "24"` or `auto-compaction-retention: "24h"`.
- If configured as `--auto-compaction-mode periodic --auto-compaction-retention "24h"`, the time duration value for `etcd --auto-compaction-retention` flag must be valid for [`time.ParseDuration`](https://golang.org/pkg/time/#ParseDuration) function in Go.
- e.g. `etcd --auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000).
- e.g. `etcd --auto-compaction-mode=periodic --auto-compaction-retention=72h` automatically `Compact` with 72-hour retention windown, for every 7.2-hour.
- e.g. `etcd --auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown, for every 3-minute.
- Periodic compactor continues to record latest revisions for every 1/10 of given compaction period (e.g. 1-hour when `etcd --auto-compaction-mode=periodic --auto-compaction-retention=10h`).
- For every 1/10 of given compaction period, compactor uses the last revision that was fetched before compaction period, to discard historical data.
- The retention window of compaction period moves for every 1/10 of given compaction period.
- For instance, when hourly writes are 100 and `--auto-compaction-retention=10`, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2.x, v3.3.0, v3.3.1, and v3.3.2 compact revision 1000, 1100, and 1200 for every 1-hour. Futhermore, when writes per minute are 1000, v3.3.0, v3.3.1, and v3.3.2 with `--auto-compaction-mode=periodic --auto-compaction-retention=30m` compact revision 30000, 33000, and 36000, for every 3-minute with more finer granularity.
- Whether compaction succeeds or not, this process repeats for every 1/10 of given compaction period. If compaction succeeds, it just removes compacted revision from historical revision records.
- Add [`etcd --grpc-keepalive-min-time`, `etcd --grpc-keepalive-interval`, `etcd --grpc-keepalive-timeout`](https://github.com/coreos/etcd/pull/8535) flags to configure server-side keepalive policies.
- Serve [`/health` endpoint as unhealthy](https://github.com/coreos/etcd/pull/8272) when [alarm (e.g. `NOSPACE`) is raised or there's no leader](https://github.com/coreos/etcd/issues/8207).
- Define [`etcdhttp.Health`](https://godoc.org/github.com/coreos/etcd/etcdserver/api/etcdhttp#Health) struct with JSON encoder.
- Note that `"health"` field is [`string` type, not `bool`](https://github.com/coreos/etcd/pull/9143).
- e.g. `{"health":"false"}`, `{"health":"true"}`
- [Remove `"errors"` field](https://github.com/coreos/etcd/pull/9162) since `v3.3.0-rc.3` (did exist only in `v3.3.0-rc.0`, `v3.3.0-rc.1`, `v3.3.0-rc.2`).
- Move [logging setup to embed package](https://github.com/coreos/etcd/pull/8810)
- Disable gRPC server info-level logs by default (can be enabled with `etcd --debug` flag).
- Use [monotonic time in Go 1.9](https://github.com/coreos/etcd/pull/8507) for `lease` package.
- Warn on [empty hosts in advertise URLs](https://github.com/coreos/etcd/pull/8384).
- Address [advertise client URLs accepts empty hosts](https://github.com/coreos/etcd/issues/8379).
- etcd v3.4 will exit on this error.
- e.g. `etcd --advertise-client-urls=http://:2379`.
- Warn on [shadowed environment variables](https://github.com/coreos/etcd/pull/8385).
- Address [error on shadowed environment variables](https://github.com/coreos/etcd/issues/8380).
- etcd v3.4 will exit on this error.
### API
- Support [ranges in transaction comparisons](https://github.com/coreos/etcd/pull/8025) for [disconnected linearized reads](https://github.com/coreos/etcd/issues/7924).
- Add [nested transactions](https://github.com/coreos/etcd/pull/8102) to extend [proxy use cases](https://github.com/coreos/etcd/issues/7857).
- Add [lease comparison target in transaction](https://github.com/coreos/etcd/pull/8324).
- Add [lease list](https://github.com/coreos/etcd/pull/8358).
- Add [hash by revision](https://github.com/coreos/etcd/pull/8263) for [better corruption checking against boltdb](https://github.com/coreos/etcd/issues/8016).
### client v3
- Add [health balancer](https://github.com/coreos/etcd/pull/8545) to fix [watch API hangs](https://github.com/coreos/etcd/issues/7247), improve [endpoint switch under network faults](https://github.com/coreos/etcd/issues/7941).
- [Refactor balancer](https://github.com/coreos/etcd/pull/8840) and add [client-side keepalive pings](https://github.com/coreos/etcd/pull/8199) to handle [network partitions](https://github.com/coreos/etcd/issues/8711).
- Add [`MaxCallSendMsgSize` and `MaxCallRecvMsgSize`](https://github.com/coreos/etcd/pull/9047) fields to [`clientv3.Config`](https://godoc.org/github.com/coreos/etcd/clientv3#Config).
- Fix [exceeded response size limit error in client-side](https://github.com/coreos/etcd/issues/9043).
- Address [kubernetes#51099](https://github.com/kubernetes/kubernetes/issues/51099).
- In previous versions(v3.2.10, v3.2.11), client response size was limited to only 4 MiB.
- `MaxCallSendMsgSize` default value is 2 MiB, if not configured.
- `MaxCallRecvMsgSize` default value is `math.MaxInt32`, if not configured.
- Accept [`Compare_LEASE`](https://github.com/coreos/etcd/pull/8324) in [`clientv3.Compare`](https://godoc.org/github.com/coreos/etcd/clientv3#Compare).
- Add [`LeaseValue` helper](https://github.com/coreos/etcd/pull/8488) to `Cmp` `LeaseID` values in `Txn`.
- Add [`MoveLeader`](https://github.com/coreos/etcd/pull/8153) to `Maintenance`.
- Add [`HashKV`](https://github.com/coreos/etcd/pull/8351) to `Maintenance`.
- Add [`Leases`](https://github.com/coreos/etcd/pull/8358) to `Lease`.
- Add [`clientv3/ordering`](https://github.com/coreos/etcd/pull/8092) for enforce [ordering in serialized requests](https://github.com/coreos/etcd/issues/7623).
- Fix ["put at-most-once" violation](https://github.com/coreos/etcd/pull/8335).
- Fix [`WatchResponse.Canceled`](https://github.com/coreos/etcd/pull/8283) on [compacted watch request](https://github.com/coreos/etcd/issues/8231).
- Fix [`concurrency/stm` `Put` with serializable snapshot](https://github.com/coreos/etcd/pull/8439).
- Use store revision from first fetch to resolve write conflicts instead of modified revision.
### etcdctl v3
- Add [`etcdctl --discovery-srv`](https://github.com/coreos/etcd/pull/8462) flag.
- Add [`etcdctl --keepalive-time`, `--keepalive-timeout`](https://github.com/coreos/etcd/pull/8663) flags.
- Add [`etcdctl lease list`](https://github.com/coreos/etcd/pull/8358) command.
- Add [`etcdctl lease keep-alive --once`](https://github.com/coreos/etcd/pull/8775) flag.
- Make [`lease timetolive LEASE_ID`](https://github.com/coreos/etcd/issues/9028) on expired lease print [`lease LEASE_ID already expired`](https://github.com/coreos/etcd/pull/9047).
- <=3.2 prints `lease LEASE_ID granted with TTL(0s), remaining(-1s)`.
- Add [`etcdctl snapshot restore --wal-dir`](https://github.com/coreos/etcd/pull/9124) flag.
- Add [`etcdctl defrag --data-dir`](https://github.com/coreos/etcd/pull/8367) flag.
- Add [`etcdctl move-leader`](https://github.com/coreos/etcd/pull/8153) command.
- Add [`etcdctl endpoint hashkv`](https://github.com/coreos/etcd/pull/8351) command.
- Add [`etcdctl endpoint --cluster`](https://github.com/coreos/etcd/pull/8143) flag, equivalent to [v2 `etcdctl cluster-health`](https://github.com/coreos/etcd/issues/8117).
- Make `etcdctl endpoint health` command terminate with [non-zero exit code on unhealthy status](https://github.com/coreos/etcd/pull/8342).
- Add [`etcdctl lock --ttl`](https://github.com/coreos/etcd/pull/8370) flag.
- Support [`etcdctl watch [key] [range_end] -- [exec-command…]`](https://github.com/coreos/etcd/pull/8919), equivalent to [v2 `etcdctl exec-watch`](https://github.com/coreos/etcd/issues/8814).
- Make `etcdctl watch -- [exec-command]` set environmental variables [`ETCD_WATCH_REVISION`, `ETCD_WATCH_EVENT_TYPE`, `ETCD_WATCH_KEY`, `ETCD_WATCH_VALUE`](https://github.com/coreos/etcd/pull/9142) for each event.
- Support [`etcdctl watch` with environmental variables `ETCDCTL_WATCH_KEY` and `ETCDCTL_WATCH_RANGE_END`](https://github.com/coreos/etcd/pull/9142).
- Enable [`clientv3.WithRequireLeader(context.Context)` for `watch`](https://github.com/coreos/etcd/pull/8672) command.
- Print [`"del"` instead of `"delete"`](https://github.com/coreos/etcd/pull/8297) in `txn` interactive mode.
- Print [`ETCD_INITIAL_ADVERTISE_PEER_URLS` in `member add`](https://github.com/coreos/etcd/pull/8332).
### etcdctl v3
- Handle [empty key permission](https://github.com/coreos/etcd/pull/8514) in `etcdctl`.
### etcdctl v2
- Add [`etcdctl backup --with-v3`](https://github.com/coreos/etcd/pull/8479) flag.
### gRPC Proxy
- Add [`grpc-proxy start --experimental-leasing-prefix`](https://github.com/coreos/etcd/pull/8341) flag.
- For disconnected linearized reads.
- Based on [V system leasing](https://github.com/coreos/etcd/issues/6065).
- See ["Disconnected consistent reads with etcd" blog post](https://coreos.com/blog/coreos-labs-disconnected-consistent-reads-with-etcd).
- Add [`grpc-proxy start --experimental-serializable-ordering`](https://github.com/coreos/etcd/pull/8315) flag.
- To ensure serializable reads have monotonically increasing store revisions across endpoints.
- Add [`grpc-proxy start --metrics-addr`](https://github.com/coreos/etcd/pull/8242) flag for an additional `/metrics` endpoint.
- Set `--metrics-addr=http://[HOST]:9379` to serve `/metrics` in insecure port 9379.
- Serve [`/health` endpoint in grpc-proxy](https://github.com/coreos/etcd/pull/8322).
- Add [`grpc-proxy start --debug`](https://github.com/coreos/etcd/pull/8994) flag.
- Add [`grpc-proxy start --max-send-bytes`](https://github.com/coreos/etcd/pull/9250) flag to [configure maximum client request size](https://github.com/coreos/etcd/issues/7923).
- Add [`grpc-proxy start --max-recv-bytes`](https://github.com/coreos/etcd/pull/9250) flag to [configure maximum client request size](https://github.com/coreos/etcd/issues/7923).
- Fix [Snapshot API error handling](https://github.com/coreos/etcd/commit/dbd16d52fbf81e5fd806d21ff5e9148d5bf203ab).
- Fix [KV API `PrevKv` flag handling](https://github.com/coreos/etcd/pull/8366).
- Fix [KV API `KeysOnly` flag handling](https://github.com/coreos/etcd/pull/8552).
### gRPC gateway
- Replace [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) endpoint `/v3alpha` with [`/v3beta`](https://github.com/coreos/etcd/pull/8880).
- To deprecate [`/v3alpha`](https://github.com/coreos/etcd/issues/8125) in v3.4.
- In v3.3, `curl -L http://localhost:2379/v3alpha/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` still works as a fallback to `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'`, but `curl -L http://localhost:2379/v3alpha/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` won't work in v3.4. Use `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` instead.
- Support ["authorization" token](https://github.com/coreos/etcd/pull/7999).
- Support [websocket for bi-directional streams](https://github.com/coreos/etcd/pull/8257).
- Fix [`Watch` API with gRPC gateway](https://github.com/coreos/etcd/issues/8237).
- Upgrade gRPC gateway to [v1.3.0](https://github.com/coreos/etcd/issues/8838).
### etcd server
- Fix [backend database in-memory index corruption](https://github.com/coreos/etcd/pull/8127) issue on restore (only 3.2.0 is affected).
- Fix [watch restore from snapshot](https://github.com/coreos/etcd/pull/8427).
- Fix [`mvcc/backend.defragdb` nil-pointer dereference on create bucket failure](https://github.com/coreos/etcd/pull/9119).
- Fix [server crash](https://github.com/coreos/etcd/pull/8010) on [invalid transaction request from gRPC gateway](https://github.com/coreos/etcd/issues/7889).
- Prevent [server panic from member update/add](https://github.com/coreos/etcd/pull/9174) with [wrong scheme URLs](https://github.com/coreos/etcd/issues/9173).
- Make [peer dial timeout longer](https://github.com/coreos/etcd/pull/8599).
- See [coreos/etcd-operator#1300](https://github.com/coreos/etcd-operator/issues/1300) for more detail.
- Make server [wait up to request time-out](https://github.com/coreos/etcd/pull/8267) with [pending RPCs](https://github.com/coreos/etcd/issues/8224).
- Fix [`grpc.Server` panic on `GracefulStop`](https://github.com/coreos/etcd/pull/8987) with [TLS-enabled server](https://github.com/coreos/etcd/issues/8916).
- Fix ["multiple peer URLs cannot start" issue](https://github.com/coreos/etcd/issues/8383).
- Fix server-side auth so [concurrent auth operations do not return old revision error](https://github.com/coreos/etcd/pull/8442).
- Handle [WAL renaming failure on Windows](https://github.com/coreos/etcd/pull/8286).
- Upgrade [`coreos/go-systemd`](https://github.com/coreos/go-systemd/releases) to `v15` (see https://github.com/coreos/go-systemd/releases/tag/v15).
- [Put back `/v2/machines`](https://github.com/coreos/etcd/pull/8062) endpoint for python-etcd wrapper.
### client v2
- [Fail-over v2 client](https://github.com/coreos/etcd/pull/8519) to next endpoint on [oneshot failure](https://github.com/coreos/etcd/issues/8515).
### Package `raft`
- Add [non-voting member](https://github.com/coreos/etcd/pull/8751).
- To implement [Raft thesis 4.2.1 Catching up new servers](https://github.com/coreos/etcd/issues/8568).
- `Learner` node does not vote or promote itself.
### Other
- Support previous two minor versions (see our [new release policy](https://github.com/coreos/etcd/pull/8805)).
- `v3.3.x` is the last release cycle that supports `ACI`.
- [AppC was officially suspended](https://github.com/appc/spec#-disclaimer-), as of late 2016.
- [`acbuild`](https://github.com/containers/build#this-project-is-currently-unmaintained) is not maintained anymore.
- `*.aci` files won't be available from etcd v3.4 release.
- Add container registry [`gcr.io/etcd-development/etcd`](https://gcr.io/etcd-development/etcd).
- [quay.io/coreos/etcd](https://quay.io/coreos/etcd) is still supported as secondary.
### Go
- Require [*Go 1.9+*](https://github.com/coreos/etcd/issues/6174).
- Compile with [*Go 1.9.3*](https://golang.org/doc/devel/release.html#go1.9).
- Deprecate [`golang.org/x/net/context`](https://github.com/coreos/etcd/pull/8511).

424
CHANGELOG-3.4.md Normal file
View File

@@ -0,0 +1,424 @@
Previous change logs can be found at [CHANGELOG-3.3](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md).
## v3.4.0 (TBD 2018-09)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.0...v3.4.0) and [v3.4 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_4.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.4 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_4.md).**
### Improved
- Rewrite [client balancer](https://github.com/coreos/etcd/pull/9860) with [new gRPC balancer interface](https://github.com/coreos/etcd/issues/9106).
- Add [backoff on watch retries on transient errors](https://github.com/coreos/etcd/pull/9840).
- Add [jitter to watch progress notify](https://github.com/coreos/etcd/pull/9278) to prevent [spikes in `etcd_network_client_grpc_sent_bytes_total`](https://github.com/coreos/etcd/issues/9246).
- Improve [slow request apply warning log](https://github.com/coreos/etcd/pull/9288).
- e.g. `read-only range request "key:\"/a\" range_end:\"/b\" " with result "range_response_count:3 size:96" took too long (97.966µs) to execute`.
- Redact [request value field](https://github.com/coreos/etcd/pull/9822).
- Provide [response size](https://github.com/coreos/etcd/pull/9826).
- Improve [TLS setup error logging](https://github.com/coreos/etcd/pull/9518) to help debug [TLS-enabled cluster configuring issues](https://github.com/coreos/etcd/issues/9400).
- Improve [long-running concurrent read transactions under light write workloads](https://github.com/coreos/etcd/pull/9296).
- Previously, periodic commit on pending writes blocks incoming read transactions, even if there is no pending write.
- Now, periodic commit operation does not block concurrent read transactions, thus improves long-running read transaction performance.
- Improve [Raft Read Index timeout warning messages](https://github.com/coreos/etcd/pull/9897).
- Adjust [election timeout on server restart](https://github.com/coreos/etcd/pull/9415) to reduce [disruptive rejoining servers](https://github.com/coreos/etcd/issues/9333).
- Previously, etcd fast-forwards election ticks on server start, with only one tick left for leader election. This is to speed up start phase, without having to wait until all election ticks elapse. Advancing election ticks is useful for cross datacenter deployments with larger election timeouts. However, it was affecting cluster availability if the last tick elapses before leader contacts the restarted node.
- Now, when etcd restarts, it adjusts election ticks with more than one tick left, thus more time for leader to prevent disruptive restart.
- Add [Raft Pre-Vote feature](https://github.com/coreos/etcd/pull/9352) to reduce [disruptive rejoining servers](https://github.com/coreos/etcd/issues/9333).
- For instance, a flaky(or rejoining) member may drop in and out, and start campaign. This member will end up with a higher term, and ignore all incoming messages with lower term. In this case, a new leader eventually need to get elected, thus disruptive to cluster availability. Raft implements Pre-Vote phase to prevent this kind of disruptions. If enabled, Raft runs an additional phase of election to check if pre-candidate can get enough votes to win an election.
- Adjust [periodic compaction retention window](https://github.com/coreos/etcd/pull/9485).
- e.g. `etcd --auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000).
- e.g. Previously, `etcd --auto-compaction-mode=periodic --auto-compaction-retention=24h` automatically `Compact` with 24-hour retention windown for every 2.4-hour. Now, `Compact` happens for every 1-hour.
- e.g. Previously, `etcd --auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown for every 3-minute. Now, `Compact` happens for every 30-minute.
- Periodic compactor keeps recording latest revisions for every compaction period when given period is less than 1-hour, or for every 1-hour when given compaction period is greater than 1-hour (e.g. 1-hour when `etcd --auto-compaction-mode=periodic --auto-compaction-retention=24h`).
- For every compaction period or 1-hour, compactor uses the last revision that was fetched before compaction period, to discard historical data.
- The retention window of compaction period moves for every given compaction period or hour.
- For instance, when hourly writes are 100 and `etcd --auto-compaction-mode=periodic --auto-compaction-retention=24h`, `v3.2.x`, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 2400, 2640, and 2880 for every 2.4-hour, while `v3.3.3` *or later* compacts revision 2400, 2500, 2600 for every 1-hour.
- Futhermore, when `etcd --auto-compaction-mode=periodic --auto-compaction-retention=30m` and writes per minute are about 1000, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 30000, 33000, and 36000, for every 3-minute, while `v3.3.3` *or later* compacts revision 30000, 60000, and 90000, for every 30-minute.
- Improve [lease expire/revoke operation performance](https://github.com/coreos/etcd/pull/9418), address [lease scalability issue](https://github.com/coreos/etcd/issues/9496).
- Make [Lease `Lookup` non-blocking with concurrent `Grant`/`Revoke`](https://github.com/coreos/etcd/pull/9229).
- Make etcd server return `raft.ErrProposalDropped` on internal Raft proposal drop in [v3 applier](https://github.com/coreos/etcd/pull/9549) and [v2 applier](https://github.com/coreos/etcd/pull/9558).
- e.g. a node is removed from cluster, or [`raftpb.MsgProp` arrives at current leader while there is an ongoing leadership transfer](https://github.com/coreos/etcd/issues/8975).
- Add [`snapshot`](https://github.com/coreos/etcd/pull/9118) package for easier snapshot workflow (see [`godoc.org/github.com/etcd/clientv3/snapshot`](https://godoc.org/github.com/coreos/etcd/clientv3/snapshot) for more).
- Improve [functional tester](https://github.com/coreos/etcd/tree/master/functional) coverage: [proxy layer to run network fault tests in CI](https://github.com/coreos/etcd/pull/9081), [TLS is enabled both for server and client](https://github.com/coreos/etcd/pull/9534), [liveness mode](https://github.com/coreos/etcd/issues/9230), [shuffle test sequence](https://github.com/coreos/etcd/issues/9381), [membership reconfiguration failure cases](https://github.com/coreos/etcd/pull/9564), [disastrous quorum loss and snapshot recover from a seed member](https://github.com/coreos/etcd/pull/9565), [embedded etcd](https://github.com/coreos/etcd/pull/9572).
- Improve [index compaction blocking](https://github.com/coreos/etcd/pull/9511) by using a copy on write clone to avoid holding the lock for the traversal of the entire index.
- Update [JWT methods](https://github.com/coreos/etcd/pull/9883) to allow for use of any supported signature method/algorithm.
- Add [Lease checkpointing](https://github.com/coreos/etcd/pull/9924) to persist remaining TTLs to the consensus log periodically so that long lived leases progress toward expiry in the presence of leader elections and server restarts.
### Breaking Changes
- Make [`ETCDCTL_API=3 etcdctl` default](https://github.com/coreos/etcd/issues/9600).
- Now, `etcdctl set foo bar` must be `ETCDCTL_API=2 etcdctl set foo bar`.
- Now, `ETCDCTL_API=3 etcdctl put foo bar` could be just `etcdctl put foo bar`.
- **Remove `etcd --ca-file` flag**, instead [use `etcd --trusted-ca-file`](https://github.com/coreos/etcd/pull/9470) (`etcd --ca-file` flag has been marked deprecated since v2.1).
- **Remove `etcd --peer-ca-file` flag**, instead [use `etcd --peer-trusted-ca-file`](https://github.com/coreos/etcd/pull/9470) (`etcd --peer-ca-file` flag has been marked deprecated since v2.1).
- **Remove `pkg/transport.TLSInfo.CAFile` field**, instead [use `pkg/transport.TLSInfo.TrustedCAFile`](https://github.com/coreos/etcd/pull/9470) (`CAFile` field has been marked deprecated since v2.1).
- Deprecate `latest` [release container](https://console.cloud.google.com/gcr/images/etcd-development/GLOBAL/etcd) tag.
- **`docker pull gcr.io/etcd-development/etcd:latest` would not be up-to-date**.
- Deprecate [minor](https://semver.org/) version [release container](https://console.cloud.google.com/gcr/images/etcd-development/GLOBAL/etcd) tags.
- `docker pull gcr.io/etcd-development/etcd:v3.3` would still work.
- **`docker pull gcr.io/etcd-development/etcd:v3.4` would not work**.
- Use **`docker pull gcr.io/etcd-development/etcd:v3.4.x`** instead, with the exact patch version.
- Drop [ACIs from official release](https://github.com/coreos/etcd/pull/9059).
- [AppC was officially suspended](https://github.com/appc/spec#-disclaimer-), as of late 2016.
- [`acbuild`](https://github.com/containers/build#this-project-is-currently-unmaintained) is not maintained anymore.
- `*.aci` files are not available from `v3.4` release.
- Exit on [empty hosts in advertise URLs](https://github.com/coreos/etcd/pull/8786).
- Address [advertise client URLs accepts empty hosts](https://github.com/coreos/etcd/issues/8379).
- e.g. exit with error on `--advertise-client-urls=http://:2379`.
- e.g. exit with error on `--initial-advertise-peer-urls=http://:2380`.
- Exit on [shadowed environment variables](https://github.com/coreos/etcd/pull/9382).
- Address [error on shadowed environment variables](https://github.com/coreos/etcd/issues/8380).
- e.g. exit with error on `ETCD_NAME=abc etcd --name=def`.
- e.g. exit with error on `ETCD_INITIAL_CLUSTER_TOKEN=abc etcd --initial-cluster-token=def`.
- e.g. exit with error on `ETCDCTL_ENDPOINTS=abc.com ETCDCTL_API=3 etcdctl endpoint health --endpoints=def.com`.
- Change [`etcdserverpb.AuthRoleRevokePermissionRequest/key,range_end` fields type from `string` to `bytes`](https://github.com/coreos/etcd/pull/9433).
- Rename [`etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metric to `etcd_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819).
- Rename `etcdserver.ServerConfig.SnapCount` field to `etcdserver.ServerConfig.SnapshotCount`, to be consistent with the flag name `etcd --snapshot-count`.
- Rename `embed.Config.SnapCount` field to [`embed.Config.SnapshotCount`](https://github.com/coreos/etcd/pull/9745), to be consistent with the flag name `etcd --snapshot-count`.
- Change [`embed.Config.CorsInfo` in `*cors.CORSInfo` type to `embed.Config.CORS` in `map[string]struct{}` type](https://github.com/coreos/etcd/pull/9490).
- Remove [`embed.Config.SetupLogging`](https://github.com/coreos/etcd/pull/9572).
- Now logger is set up automatically based on [`embed.Config.Logger`, `embed.Config.LogOutputs`, `embed.Config.Debug` fields](https://github.com/coreos/etcd/pull/9572).
- Rename [`etcd --log-output` to `etcd --log-outputs`](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs.
- **`etcd --log-output`** will be deprecated in v3.5.
- Rename [**`embed.Config.LogOutput`** to **`embed.Config.LogOutputs`**](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs.
- Change [**`embed.Config.LogOutputs`** type from `string` to `[]string`](https://github.com/coreos/etcd/pull/9579) to support multiple log outputs.
- Now that `etcd --log-outputs` accepts multiple writers, etcd configuration YAML file `log-outputs` field must be changed to `[]string` type.
- Previously, `etcd --config-file etcd.config.yaml` can have `log-outputs: default` field, now must be `log-outputs: [default]`.
- Change v3 `etcdctl snapshot` exit codes with [`snapshot` package](https://github.com/coreos/etcd/pull/9118/commits/df689f4280e1cce4b9d61300be13ca604d41670a).
- Exit on error with exit code 1 (no more exit code 5 or 6 on `snapshot save/restore` commands).
- Migrate dependency management tool from `glide` to [`golang/dep`](https://github.com/coreos/etcd/pull/9155).
- <= 3.3 puts `vendor` directory under `cmd/vendor` directory to [prevent conflicting transitive dependencies](https://github.com/coreos/etcd/issues/4913).
- 3.4 moves `cmd/vendor` directory to `vendor` at repository root.
- Remove recursive symlinks in `cmd` directory.
- Now `go get/install/build` on `etcd` packages (e.g. `clientv3`, `tools/benchmark`) enforce builds with etcd `vendor` directory.
- Replace [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) endpoint `/v3beta` with [`/v3`](https://github.com/coreos/etcd/pull/9298).
- Deprecated [`/v3alpha`](https://github.com/coreos/etcd/pull/9298).
- To deprecate [`/v3beta`](https://github.com/coreos/etcd/issues/9189) in v3.5.
- In v3.4, `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` still works as a fallback to `curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'`, but `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` won't work in v3.5. Use `curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` instead.
- Change [`wal` package function signatures](https://github.com/coreos/etcd/pull/9572) to support [structured logger and logging to file](https://github.com/coreos/etcd/issues/9438) in server-side.
- Previously, `Open(dirpath string, snap walpb.Snapshot) (*WAL, error)`, now `Open(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error)`.
- Previously, `OpenForRead(dirpath string, snap walpb.Snapshot) (*WAL, error)`, now `OpenForRead(lg *zap.Logger, dirpath string, snap walpb.Snapshot) (*WAL, error)`.
- Previously, `Repair(dirpath string) bool`, now `Repair(lg *zap.Logger, dirpath string) bool`.
- Previously, `Create(dirpath string, metadata []byte) (*WAL, error)`, now `Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error)`.
- Remove [`pkg/cors` package](https://github.com/coreos/etcd/pull/9490).
- Change [`etcd --experimental-enable-v2v3`](TODO) flag to `etcd --enable-v2v3`; v2 storage emulation is now stable.
- Move internal packages to `etcdserver`.
- `"github.com/coreos/etcd/alarm"` to `"github.com/coreos/etcd/etcdserver/api/v3alarm"`.
- `"github.com/coreos/etcd/compactor"` to `"github.com/coreos/etcd/etcdserver/api/v3compactor"`.
- `"github.com/coreos/etcd/discovery"` to `"github.com/coreos/etcd/etcdserver/api/v2discovery"`.
- `"github.com/coreos/etcd/etcdserver/auth"` to `"github.com/coreos/etcd/etcdserver/api/v2auth"`.
- `"github.com/coreos/etcd/etcdserver/membership"` to `"github.com/coreos/etcd/etcdserver/api/membership"`.
- `"github.com/coreos/etcd/etcdserver/stats"` to `"github.com/coreos/etcd/etcdserver/api/v2stats"`.
- `"github.com/coreos/etcd/error"` to `"github.com/coreos/etcd/etcdserver/api/v2error"`.
- `"github.com/coreos/etcd/rafthttp"` to `"github.com/coreos/etcd/etcdserver/api/rafthttp"`.
- `"github.com/coreos/etcd/snap"` to `"github.com/coreos/etcd/etcdserver/api/snap"`.
- `"github.com/coreos/etcd/store"` to `"github.com/coreos/etcd/etcdserver/api/v2store"`.
- Change [snapshot file permissions](https://github.com/coreos/etcd/pull/9977): On Linux, the snapshot file changes from readable by all (mode 0644) to readable by the user only (mode 0600).
### Dependency
- Upgrade [`google.golang.org/grpc`](https://github.com/grpc/grpc-go/releases) from [**`v1.7.5`**](https://github.com/grpc/grpc-go/releases/tag/v1.7.5) to [**`v1.13.0`**](https://github.com/grpc/grpc-go/releases/tag/v1.13.0).
- Upgrade [`github.com/golang/protobuf`](https://github.com/golang/protobuf/releases) from [**`golang/protobuf@1e59b77b5`**](https://github.com/golang/protobuf/commit/1e59b77b52bf8e4b449a57e6f79f21226d571845) to [**`v1.1.0`**](https://github.com/golang/protobuf/releases/tag/v1.1.0).
- Upgrade [`golang.org/x/crypto`](https://github.com/golang/crypto) from [**`crypto@9419663f5`**](https://github.com/golang/crypto/commit/9419663f5a44be8b34ca85f08abc5fe1be11f8a3) to [**`crypto@8ac0e0d97`**](https://github.com/golang/crypto/commit/8ac0e0d97ce45cd83d1d7243c060cb8461dda5e9).
- Upgrade [`golang.org/x/net`](https://github.com/golang/net) from [**`net@66aacef3d`**](https://github.com/golang/net/commit/66aacef3dd8a676686c7ae3716979581e8b03c47) to [**`net@db08ff08e`**](https://github.com/golang/net/commit/db08ff08e8622530d9ed3a0e8ac279f6d4c02196).
- Upgrade [`golang.org/x/sys`](https://github.com/golang/sys) from [**`sys@ebfc5b463`**](https://github.com/golang/sys/commit/ebfc5b4631820b793c9010c87fd8fef0f39eb082) to [**`sys@56ede360e`**](https://github.com/golang/sys/commit/56ede360ec1c541828fb88741b3f1049406d28f5).
- Upgrade [`golang.org/x/text`](https://github.com/golang/text) from [**`text@b19bf474d`**](https://github.com/golang/text/commit/b19bf474d317b857955b12035d2c5acb57ce8b01) to [**`text@f21a4dfb5`**](https://github.com/golang/text/commit/f21a4dfb5e38f5895301dc265a8def02365cc3d0).
- Upgrade [`golang.org/x/time`](https://github.com/golang/time) from [**`time@c06e80d93`**](https://github.com/golang/time/commit/c06e80d9300e4443158a03817b8a8cb37d230320) to [**`time@fbb02b229`**](https://github.com/golang/time/commit/fbb02b2291d28baffd63558aa44b4b56f178d650).
- Upgrade [`github.com/golang/protobuf`](https://github.com/golang/protobuf/releases) from [**`golang/protobuf@1e59b77b5`**](https://github.com/golang/protobuf/commit/1e59b77b52bf8e4b449a57e6f79f21226d571845) to [**`v1.1.0`**](https://github.com/golang/protobuf/releases/tag/v1.1.0).
- Upgrade [`gopkg.in/yaml.v2`](https://github.com/go-yaml/yaml/releases) from [**`yaml@cd8b52f82`**](https://github.com/go-yaml/yaml/commit/cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b) to [**`yaml@5420a8b67`**](https://github.com/go-yaml/yaml/commit/5420a8b6744d3b0345ab293f6fcba19c978f1183).
- Upgrade [`github.com/dgrijalva/jwt-go`](https://github.com/dgrijalva/jwt-go/releases) from [**`v3.0.0`**](https://github.com/dgrijalva/jwt-go/releases/tag/v3.0.0) to [**`v3.2.0`**](https://github.com/dgrijalva/jwt-go/releases/tag/v3.2.0).
- Upgrade [`github.com/ugorji/go/codec`](https://github.com/ugorji/go/releases) to [**`v1.1.1`**](https://github.com/ugorji/go/releases/tag/v1.1.1), and [regenerate v2 `client`](https://github.com/coreos/etcd/pull/9494).
- Upgrade [`github.com/soheilhy/cmux`](https://github.com/soheilhy/cmux/releases) from [**`v0.1.3`**](https://github.com/soheilhy/cmux/releases/tag/v0.1.3) to [**`v0.1.4`**](https://github.com/soheilhy/cmux/releases/tag/v0.1.4).
- Upgrade [`github.com/google/btree`](https://github.com/google/btree/releases) from [**`google/btree@925471ac9`**](https://github.com/google/btree/commit/925471ac9e2131377a91e1595defec898166fe49) to [**`google/btree@e89373fe6`**](https://github.com/google/btree/commit/e89373fe6b4a7413d7acd6da1725b83ef713e6e4).
- Upgrade [`github.com/spf13/cobra`](https://github.com/spf13/cobra/releases) from [**`spf13/cobra@1c44ec8d3`**](https://github.com/spf13/cobra/commit/1c44ec8d3f1552cac48999f9306da23c4d8a288b) to [**`v0.0.3`**](https://github.com/spf13/cobra/releases/tag/v0.0.3).
- Upgrade [`github.com/spf13/pflag`](https://github.com/spf13/pflag/releases) from [**`v1.0.0`**](https://github.com/spf13/pflag/releases/tag/v1.0.0) to [**`spf13/pflag@1ce0cc6db`**](https://github.com/spf13/pflag/commit/1ce0cc6db4029d97571db82f85092fccedb572ce).
- Upgrade [`github.com/coreos/go-systemd`](https://github.com/coreos/go-systemd/releases) from [**`v15`**](https://github.com/coreos/go-systemd/releases/tag/v15) to [**`v17`**](https://github.com/coreos/go-systemd/releases/tag/v17).
- Upgrade [`github.com/prometheus/client_golang`](https://github.com/prometheus/client_golang/releases) from [**``prometheus/client_golang@5cec1d042``**](https://github.com/prometheus/client_golang/commit/5cec1d0429b02e4323e042eb04dafdb079ddf568) to [**`v0.8.0`**](https://github.com/prometheus/client_golang/releases/tag/v0.8.0).
- Upgrade [`github.com/grpc-ecosystem/go-grpc-prometheus`](https://github.com/grpc-ecosystem/go-grpc-prometheus/releases) from [**``grpc-ecosystem/go-grpc-prometheus@0dafe0d49``**](https://github.com/grpc-ecosystem/go-grpc-prometheus/commit/0dafe0d496ea71181bf2dd039e7e3f44b6bd11a7) to [**`v1.2.0`**](https://github.com/grpc-ecosystem/go-grpc-prometheus/releases/tag/v1.2.0).
- Upgrade [`github.com/grpc-ecosystem/grpc-gateway`](https://github.com/grpc-ecosystem/grpc-gateway/releases) from [**`v1.3.1`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.3.1) to [**`v1.4.1`**](https://github.com/grpc-ecosystem/grpc-gateway/releases/tag/v1.4.1).
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#latest) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Add [`etcd_network_active_peers`](https://github.com/coreos/etcd/pull/9762) Prometheus metric.
- Let's say `"7339c4e5e833c029"` server `/metrics` returns `etcd_network_active_peers{Local="7339c4e5e833c029",Remote="729934363faa4a24"} 1` and `etcd_network_active_peers{Local="7339c4e5e833c029",Remote="b548c2511513015"} 1`. This indicates that the local node `"7339c4e5e833c029"` currently has two active remote peers `"729934363faa4a24"` and `"b548c2511513015"` in a 3-node cluster. If the node `"b548c2511513015"` is down, the local node `"7339c4e5e833c029"` will show `etcd_network_active_peers{Local="7339c4e5e833c029",Remote="729934363faa4a24"} 1` and `etcd_network_active_peers{Local="7339c4e5e833c029",Remote="b548c2511513015"} 0`.
- Add [`etcd_network_disconnected_peers_total`](https://github.com/coreos/etcd/pull/9762) Prometheus metric.
- If a remote peer `"b548c2511513015"` is down, the local node `"7339c4e5e833c029"` server `/metrics` would return `etcd_network_disconnected_peers_total{Local="7339c4e5e833c029",Remote="b548c2511513015"} 1`, while active peer metrics will show `etcd_network_active_peers{Local="7339c4e5e833c029",Remote="729934363faa4a24"} 1` and `etcd_network_active_peers{Local="7339c4e5e833c029",Remote="b548c2511513015"} 0`.
- Add [`etcd_network_server_stream_failures_total`](https://github.com/coreos/etcd/pull/9760) Prometheus metric.
- e.g. `etcd_network_server_stream_failures_total{API="lease-keepalive",Type="receive"} 1`
- e.g. `etcd_network_server_stream_failures_total{API="watch",Type="receive"} 1`
- Increase [`etcd_network_peer_round_trip_time_seconds`](https://github.com/coreos/etcd/pull/9762) Prometheus metric histogram upper-bound.
- Previously, highest bucket only collects requests taking 0.8192 seconds or more.
- Now, highest buckets collect 0.8192 seconds, 1.6384 seconds, and 3.2768 seconds or more.
- Add [`etcd_server_is_leader`](https://github.com/coreos/etcd/pull/9587) Prometheus metric.
- Add [`etcd_server_version`](https://github.com/coreos/etcd/pull/8960) Prometheus metric.
- To replace [Kubernetes `etcd-version-monitor`](https://github.com/coreos/etcd/issues/8948).
- Add [`etcd_server_go_version`](https://github.com/coreos/etcd/pull/9957) Prometheus metric.
- Add [`etcd_server_heartbeat_send_failures_total`](https://github.com/coreos/etcd/pull/9761) Prometheus metric.
- Add [`etcd_server_slow_apply_total`](https://github.com/coreos/etcd/pull/9761) Prometheus metric.
- Add [`etcd_server_slow_read_indexes_total`](https://github.com/coreos/etcd/pull/9897) Prometheus metric.
- Add [`etcd_server_quota_backend_bytes`](https://github.com/coreos/etcd/pull/9820) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
- Add [`etcd_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819) Prometheus metric.
- Renamed from [`etcd_debugging_mvcc_db_total_size_in_bytes`](https://github.com/coreos/etcd/pull/9819).
- Add [`etcd_mvcc_db_total_size_in_use_in_bytes`](https://github.com/coreos/etcd/pull/9256) Prometheus metric.
- Use it with `etcd_mvcc_db_total_size_in_bytes` and `etcd_mvcc_db_total_size_in_use_in_bytes`.
- `etcd_server_quota_backend_bytes 2.147483648e+09` means current quota size is 2 GB.
- `etcd_mvcc_db_total_size_in_bytes 20480` means current physically allocated DB size is 20 KB.
- `etcd_mvcc_db_total_size_in_use_in_bytes 16384` means future DB size if defragment operation is complete.
- `etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes` is the number of bytes that can be saved on disk with defragment operation.
- Add [`etcd_snap_fsync_duration_seconds`](https://github.com/coreos/etcd/pull/9762) Prometheus metric.
- Add [`etcd_disk_backend_defrag_duration_seconds`](https://github.com/coreos/etcd/pull/9761) Prometheus metric.
- Add [`etcd_mvcc_hash_duration_seconds`](https://github.com/coreos/etcd/pull/9761) Prometheus metric.
- Add [`etcd_mvcc_hash_rev_duration_seconds`](https://github.com/coreos/etcd/pull/9761) Prometheus metric.
- Add [`etcd_debugging_disk_backend_commit_rebalance_duration_seconds`](https://github.com/coreos/etcd/pull/9834) Prometheus metric.
- Add [`etcd_debugging_disk_backend_commit_spill_duration_seconds`](https://github.com/coreos/etcd/pull/9834) Prometheus metric.
- Add [`etcd_debugging_disk_backend_commit_write_duration_seconds`](https://github.com/coreos/etcd/pull/9834) Prometheus metric.
- Add [`etcd_debugging_lease_granted_total`](https://github.com/coreos/etcd/pull/9778) Prometheus metric.
- Add [`etcd_debugging_lease_revoked_total`](https://github.com/coreos/etcd/pull/9778) Prometheus metric.
- Add [`etcd_debugging_lease_renewed_total`](https://github.com/coreos/etcd/pull/9778) Prometheus metric.
- Add [`etcd_debugging_lease_ttl_total`](https://github.com/coreos/etcd/pull/9778) Prometheus metric.
- Increase [`etcd_debugging_mvcc_index_compaction_pause_duration_milliseconds`](https://github.com/coreos/etcd/pull/9762) Prometheus metric histogram upper-bound.
- Previously, highest bucket only collects requests taking 1.024 seconds or more.
- Now, highest buckets collect 1.024 seconds, 2.048 seconds, and 4.096 seconds or more.
- Fix missing [`etcd_network_peer_sent_failures_total`](https://github.com/coreos/etcd/pull/9437) Prometheus metric count.
- Fix [`etcd_debugging_server_lease_expired_total`](https://github.com/coreos/etcd/pull/9557) Prometheus metric.
- Fix [race conditions in v2 server stat collecting](https://github.com/coreos/etcd/pull/9562).
### Security, Authentication
See [security doc](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.
- Support TLS cipher suite whitelisting.
- To block [weak cipher suites](https://github.com/coreos/etcd/issues/8320).
- TLS handshake fails when client hello is requested with invalid cipher suites.
- Add [`etcd --cipher-suites`](https://github.com/coreos/etcd/pull/9801) flag.
- If empty, Go auto-populates the list.
- Add [`etcd --host-whitelist`](https://github.com/coreos/etcd/pull/9372) flag, [`etcdserver.Config.HostWhitelist`](https://github.com/coreos/etcd/pull/9372), and [`embed.Config.HostWhitelist`](https://github.com/coreos/etcd/pull/9372), to prevent ["DNS Rebinding"](https://en.wikipedia.org/wiki/DNS_rebinding) attack.
- Any website can simply create an authorized DNS name, and direct DNS to `"localhost"` (or any other address). Then, all HTTP endpoints of etcd server listening on `"localhost"` becomes accessible, thus vulnerable to [DNS rebinding attacks (CVE-2018-5702)](https://bugs.chromium.org/p/project-zero/issues/detail?id=1447#c2).
- Client origin enforce policy works as follow:
- If client connection is secure via HTTPS, allow any hostnames..
- If client connection is not secure and `"HostWhitelist"` is not empty, only allow HTTP requests whose Host field is listed in whitelist.
- By default, `"HostWhitelist"` is `"*"`, which means insecure server allows all client HTTP requests.
- Note that the client origin policy is enforced whether authentication is enabled or not, for tighter controls.
- When specifying hostnames, loopback addresses are not added automatically. To allow loopback interfaces, add them to whitelist manually (e.g. `"localhost"`, `"127.0.0.1"`, etc.).
- e.g. `etcd --host-whitelist example.com`, then the server will reject all HTTP requests whose Host field is not `example.com` (also rejects requests to `"localhost"`).
- Support [`etcd --cors`](https://github.com/coreos/etcd/pull/9490) in v3 HTTP requests (gRPC gateway).
- Support [`ttl` field for `etcd` Authentication JWT token](https://github.com/coreos/etcd/pull/8302).
- e.g. `etcd --auth-token jwt,pub-key=<pub key path>,priv-key=<priv key path>,sign-method=<sign method>,ttl=5m`.
- Allow empty token provider in [`etcdserver.ServerConfig.AuthToken`](https://github.com/coreos/etcd/pull/9369).
- Fix [TLS reload](https://github.com/coreos/etcd/pull/9570) when [certificate SAN field only includes IP addresses but no domain names](https://github.com/coreos/etcd/issues/9541).
- In Go, server calls `(*tls.Config).GetCertificate` for TLS reload if and only if server's `(*tls.Config).Certificates` field is not empty, or `(*tls.ClientHelloInfo).ServerName` is not empty with a valid SNI from the client. Previously, etcd always populates `(*tls.Config).Certificates` on the initial client TLS handshake, as non-empty. Thus, client was always expected to supply a matching SNI in order to pass the TLS verification and to trigger `(*tls.Config).GetCertificate` to reload TLS assets.
- However, a certificate whose SAN field does [not include any domain names but only IP addresses](https://github.com/coreos/etcd/issues/9541) would request `*tls.ClientHelloInfo` with an empty `ServerName` field, thus failing to trigger the TLS reload on initial TLS handshake; this becomes a problem when expired certificates need to be replaced online.
- Now, `(*tls.Config).Certificates` is created empty on initial TLS client handshake, first to trigger `(*tls.Config).GetCertificate`, and then to populate rest of the certificates on every new TLS connection, even when client SNI is empty (e.g. cert only includes IPs).
### etcd server
- Add [`etcd --initial-election-tick-advance`](https://github.com/coreos/etcd/pull/9591) flag to configure initial election tick fast-forward.
- By default, `etcd --initial-election-tick-advance=true`, then local member fast-forwards election ticks to speed up "initial" leader election trigger.
- This benefits the case of larger election ticks. For instance, cross datacenter deployment may require longer election timeout of 10-second. If true, local node does not need wait up to 10-second. Instead, forwards its election ticks to 8-second, and have only 2-second left before leader election.
- Major assumptions are that: cluster has no active leader thus advancing ticks enables faster leader election. Or cluster already has an established leader, and rejoining follower is likely to receive heartbeats from the leader after tick advance and before election timeout.
- However, when network from leader to rejoining follower is congested, and the follower does not receive leader heartbeat within left election ticks, disruptive election has to happen thus affecting cluster availabilities.
- Now, this can be disabled by setting `etcd --initial-election-tick-advance=false`.
- Disabling this would slow down initial bootstrap process for cross datacenter deployments. Make tradeoffs by configuring `etcd --initial-election-tick-advance` at the cost of slow initial bootstrap.
- If single-node, it advances ticks regardless.
- Address [disruptive rejoining follower node](https://github.com/coreos/etcd/issues/9333).
- Add [`etcd --pre-vote`](https://github.com/coreos/etcd/pull/9352) flag to enable to run an additional Raft election phase.
- For instance, a flaky(or rejoining) member may drop in and out, and start campaign. This member will end up with a higher term, and ignore all incoming messages with lower term. In this case, a new leader eventually need to get elected, thus disruptive to cluster availability. Raft implements Pre-Vote phase to prevent this kind of disruptions. If enabled, Raft runs an additional phase of election to check if pre-candidate can get enough votes to win an election.
- `etcd --pre-vote=false` by default.
- v3.5 will enable `etcd --pre-vote=true` by default.
- [`etcd --initial-corrupt-check`](TODO) flag is now stable (`etcd --experimental-initial-corrupt-check`haisbeen deprecated).
- `etcd --initial-corrupt-check=true` by default, to check cluster database hashes before serving client/peer traffic.
- [`etcd --corrupt-check-time`](TODO) flag is now stable (`etcd --experimental-corrupt-check-time`haisbeen deprecated).
- `etcd --corrupt-check-time=12h` by default, to check cluster database hashes for every 12-hour.
- [`etcd --enable-v2v3`](TODO) flag is now stable.
- `etcd --experimental-enable-v2v3` has been deprecated.
- Added [more v2v3 integration tests](https://github.com/coreos/etcd/pull/9634).
- `etcd --enable-v2=true --enable-v2v3=''` by default, to enable v2 API server that is backed by **v2 store**.
- `etcd --enable-v2=true --enable-v2v3=/aaa` to enable v2 API server that is backed by **v3 storage**.
- `etcd --enable-v2=false --enable-v2v3=''` to disable v2 API server.
- `etcd --enable-v2=false --enable-v2v3=/aaa` to disable v2 API server. TODO: error?
- Automatically [create parent directory if it does not exist](https://github.com/coreos/etcd/pull/9626) (fix [issue#9609](https://github.com/coreos/etcd/issues/9609)).
- v4.0 will configure `etcd --enable-v2=true --enable-v2v3=/aaa` to enable v2 API server that is backed by **v3 storage**.
- Add [`etcd --discovery-srv-name`](https://github.com/coreos/etcd/pull/8690) flag to support custom DNS SRV name with discovery.
- If not given, etcd queries `_etcd-server-ssl._tcp.[YOUR_HOST]` and `_etcd-server._tcp.[YOUR_HOST]`.
- If `etcd --discovery-srv-name="foo"`, then query `_etcd-server-ssl-foo._tcp.[YOUR_HOST]` and `_etcd-server-foo._tcp.[YOUR_HOST]`.
- Useful for operating multiple etcd clusters under the same domain.
- Support TLS cipher suite whitelisting.
- To block [weak cipher suites](https://github.com/coreos/etcd/issues/8320).
- TLS handshake fails when client hello is requested with invalid cipher suites.
- Add [`etcd --cipher-suites`](https://github.com/coreos/etcd/pull/9801) flag.
- If empty, Go auto-populates the list.
- Support [`etcd --cors`](https://github.com/coreos/etcd/pull/9490) in v3 HTTP requests (gRPC gateway).
- Rename [`etcd --log-output` to `etcd --log-outputs`](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs.
- **`etcd --log-output` will be deprecated in v3.5**.
- Add [`etcd --logger`](https://github.com/coreos/etcd/pull/9572) flag to support [structured logger and multiple log outputs](https://github.com/coreos/etcd/issues/9438) in server-side.
- **`etcd --logger=capnslog` will be deprecated in v3.5**.
- Main motivation is to promote automated etcd monitoring, rather than looking back server logs when it starts breaking. Future development will make etcd log as few as possible, and make etcd easier to monitor with metrics and alerts.
- `etcd --logger=capnslog --log-outputs=default` is the default setting and same as previous etcd server logging format.
- `etcd --logger=zap --log-outputs=default` is not supported when `etcd --logger=zap`.
- Instead, use `etcd --logger=zap --log-outputs=stderr`.
- Or, use `etcd --logger=zap --log-outputs=systemd/journal` to send logs to the local systemd journal.
- Previously, if etcd parent process ID (PPID) is 1 (e.g. run with systemd), `etcd --logger=capnslog --log-outputs=default` redirects server logs to local systemd journal. And if write to journald fails, it writes to `os.Stderr` as a fallback.
- However, even with PPID 1, it can fail to dial systemd journal (e.g. run embedded etcd with Docker container). Then, [every single log write will fail](https://github.com/coreos/etcd/pull/9729) and fall back to `os.Stderr`, which is inefficient.
- To avoid this problem, systemd journal logging must be configured manually.
- `etcd --logger=zap --log-outputs=stderr` will log server operations in [JSON-encoded format](https://godoc.org/go.uber.org/zap#NewProductionEncoderConfig) and writes logs to `os.Stderr`. Use this to override journald log redirects.
- `etcd --logger=zap --log-outputs=stdout` will log server operations in [JSON-encoded format](https://godoc.org/go.uber.org/zap#NewProductionEncoderConfig) and writes logs to `os.Stdout` Use this to override journald log redirects.
- `etcd --logger=zap --log-outputs=a.log` will log server operations in [JSON-encoded format](https://godoc.org/go.uber.org/zap#NewProductionEncoderConfig) and writes logs to the specified file `a.log`.
- `etcd --logger=zap --log-outputs=a.log,b.log,c.log,stdout` [writes server logs to multiple files `a.log`, `b.log` and `c.log` at the same time](https://github.com/coreos/etcd/pull/9579) and outputs to `os.Stderr`, in [JSON-encoded format](https://godoc.org/go.uber.org/zap#NewProductionEncoderConfig).
- `etcd --logger=zap --log-outputs=/dev/null` will discard all server logs.
- Fix [`mvcc` "unsynced" watcher restore operation](https://github.com/coreos/etcd/pull/9281).
- "unsynced" watcher is watcher that needs to be in sync with events that have happened.
- That is, "unsynced" watcher is the slow watcher that was requested on old revision.
- "unsynced" watcher restore operation was not correctly populating its underlying watcher group.
- Which possibly causes [missing events from "unsynced" watchers](https://github.com/coreos/etcd/issues/9086).
- A node gets network partitioned with a watcher on a future revision, and falls behind receiving a leader snapshot after partition gets removed. When applying this snapshot, etcd watch storage moves current synced watchers to unsynced since sync watchers might have become stale during network partition. And reset synced watcher group to restart watcher routines. Previously, there was a bug when moving from synced watcher group to unsynced, thus client would miss events when the watcher was requested to the network-partitioned node.
- Fix [`mvcc` server panic from restore operation](https://github.com/coreos/etcd/pull/9775).
- Let's assume that a watcher had been requested with a future revision X and sent to node A that became network-partitioned thereafter. Meanwhile, cluster makes progress. Then when the partition gets removed, the leader sends a snapshot to node A. Previously if the snapshot's latest revision is still lower than the watch revision X, **etcd server panicked** during snapshot restore operation.
- Now, this server-side panic has been fixed.
- Fix [server panic on invalid Election Proclaim/Resign HTTP(S) requests](https://github.com/coreos/etcd/pull/9379).
- Previously, wrong-formatted HTTP requests to Election API could trigger panic in etcd server.
- e.g. `curl -L http://localhost:2379/v3/election/proclaim -X POST -d '{"value":""}'`, `curl -L http://localhost:2379/v3/election/resign -X POST -d '{"value":""}'`.
- Fix [revision-based compaction retention parsing](https://github.com/coreos/etcd/pull/9339).
- Previously, `etcd --auto-compaction-mode revision --auto-compaction-retention 1` was [translated to revision retention 3600000000000](https://github.com/coreos/etcd/issues/9337).
- Now, `etcd --auto-compaction-mode revision --auto-compaction-retention 1` is correctly parsed as revision retention 1.
- Prevent [overflow by large `TTL` values for `Lease` `Grant`](https://github.com/coreos/etcd/pull/9399).
- `TTL` parameter to `Grant` request is unit of second.
- Leases with too large `TTL` values exceeding `math.MaxInt64` [expire in unexpected ways](https://github.com/coreos/etcd/issues/9374).
- Server now returns `rpctypes.ErrLeaseTTLTooLarge` to client, when the requested `TTL` is larger than *9,000,000,000 seconds* (which is >285 years).
- Again, etcd `Lease` is meant for short-periodic keepalives or sessions, in the range of seconds or minutes. Not for hours or days!
- Enable etcd server [`raft.Config.CheckQuorum` when starting with `ForceNewCluster`](https://github.com/coreos/etcd/pull/9347).
- Allow [non-WAL files in `etcd --wal-dir` directory](https://github.com/coreos/etcd/pull/9743).
- Previously, existing files such as [`lost+found`](https://github.com/coreos/etcd/issues/7287) in WAL directory prevent etcd server boot.
- Now, WAL directory that contains only `lost+found` or a file that's not suffixed with `.wal` is considered non-initialized.
### API
- Add [`snapshot`](https://github.com/coreos/etcd/pull/9118) package for snapshot restore/save operations (see [`godoc.org/github.com/etcd/clientv3/snapshot`](https://godoc.org/github.com/coreos/etcd/clientv3/snapshot) for more).
- Add [`watch_id` field to `etcdserverpb.WatchCreateRequest`](https://github.com/coreos/etcd/pull/9065) to allow user-provided watch ID to `mvcc`.
- Corresponding `watch_id` is returned via `etcdserverpb.WatchResponse`, if any.
- Add [`fragment` field to `etcdserverpb.WatchCreateRequest`](https://github.com/coreos/etcd/pull/9291) to request etcd server to [split watch events](https://github.com/coreos/etcd/issues/9294) when the total size of events exceeds `etcd --max-request-bytes` flag value plus gRPC-overhead 512 bytes.
- The default server-side request bytes limit is `embed.DefaultMaxRequestBytes` which is 1.5 MiB plus gRPC-overhead 512 bytes.
- If watch response events exceed this server-side request limit and watch request is created with `fragment` field `true`, the server will split watch events into a set of chunks, each of which is a subset of watch events below server-side request limit.
- Useful when client-side has limited bandwidths.
- For example, watch response contains 10 events, where each event is 1 MiB. And server `etcd --max-request-bytes` flag value is 1 MiB. Then, server will send 10 separate fragmented events to the client.
- For example, watch response contains 5 events, where each event is 2 MiB. And server `etcd --max-request-bytes` flag value is 1 MiB and `clientv3.Config.MaxCallRecvMsgSize` is 1 MiB. Then, server will try to send 5 separate fragmented events to the client, and the client will error with `"code = ResourceExhausted desc = grpc: received message larger than max (...)"`.
- Client must implement fragmented watch event merge (which `clientv3` does in etcd v3.4).
- Add [`raftAppliedIndex` field to `etcdserverpb.StatusResponse`](https://github.com/coreos/etcd/pull/9176) for current Raft applied index.
- Add [`errors` field to `etcdserverpb.StatusResponse`](https://github.com/coreos/etcd/pull/9206) for server-side error.
- e.g. `"etcdserver: no leader", "NOSPACE", "CORRUPT"`
- Add [`dbSizeInUse` field to `etcdserverpb.StatusResponse`](https://github.com/coreos/etcd/pull/9256) for actual DB size after compaction.
- Add [`WatchRequest.WatchProgressRequest`](https://github.com/coreos/etcd/pull/9869).
- To manually trigger broadcasting watch progress event (empty watch response with latest header) to all associated watch streams.
- Think of it as `WithProgressNotify` that can be triggered manually.
Note: **v3.5 will deprecate `etcd --log-package-levels` flag for `capnslog`**; `etcd --logger=zap --log-outputs=stderr` will the default. **v3.5 will deprecate `[CLIENT-URL]/config/local/log` endpoint.**
### Package `embed`
- Add [`embed.Config.CipherSuites`](https://github.com/coreos/etcd/pull/9801) to specify a list of supported cipher suites for TLS handshake between client/server and peers.
- If empty, Go auto-populates the list.
- Both `embed.Config.ClientTLSInfo.CipherSuites` and `embed.Config.CipherSuites` cannot be non-empty at the same time.
- If not empty, specify either `embed.Config.ClientTLSInfo.CipherSuites` or `embed.Config.CipherSuites`.
- Add [`embed.Config.InitialElectionTickAdvance`](https://github.com/coreos/etcd/pull/9591) to enable/disable initial election tick fast-forward.
- `embed.NewConfig()` would return `*embed.Config` with `InitialElectionTickAdvance` as true by default.
- Define [`embed.CompactorModePeriodic`](https://godoc.org/github.com/coreos/etcd/embed#pkg-variables) for `compactor.ModePeriodic`.
- Define [`embed.CompactorModeRevision`](https://godoc.org/github.com/coreos/etcd/embed#pkg-variables) for `compactor.ModeRevision`.
- Change [`embed.Config.CorsInfo` in `*cors.CORSInfo` type to `embed.Config.CORS` in `map[string]struct{}` type](https://github.com/coreos/etcd/pull/9490).
- Remove [`embed.Config.SetupLogging`](https://github.com/coreos/etcd/pull/9572).
- Now logger is set up automatically based on [`embed.Config.Logger`, `embed.Config.LogOutputs`, `embed.Config.Debug` fields](https://github.com/coreos/etcd/pull/9572).
- Add [`embed.Config.Logger`](https://github.com/coreos/etcd/pull/9518) to support [structured logger `zap`](https://github.com/uber-go/zap) in server-side.
- Rename `embed.Config.SnapCount` field to [`embed.Config.SnapshotCount`](https://github.com/coreos/etcd/pull/9745), to be consistent with the flag name `etcd --snapshot-count`.
- Rename [**`embed.Config.LogOutput`** to **`embed.Config.LogOutputs`**](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs.
- Change [**`embed.Config.LogOutputs`** type from `string` to `[]string`](https://github.com/coreos/etcd/pull/9579) to support multiple log outputs.
### Package `integration`
- Add [`CLUSTER_DEBUG` to enable test cluster logging](https://github.com/coreos/etcd/pull/9678).
- Deprecated `capnslog` in integration tests.
### client v3
- Add [`WithFragment` `OpOption`](https://github.com/coreos/etcd/pull/9291) to support [watch events fragmentation](https://github.com/coreos/etcd/issues/9294) when the total size of events exceeds `etcd --max-request-bytes` flag value plus gRPC-overhead 512 bytes.
- Watch fragmentation is disabled by default.
- The default server-side request bytes limit is `embed.DefaultMaxRequestBytes` which is 1.5 MiB plus gRPC-overhead 512 bytes.
- If watch response events exceed this server-side request limit and watch request is created with `fragment` field `true`, the server will split watch events into a set of chunks, each of which is a subset of watch events below server-side request limit.
- Useful when client-side has limited bandwidths.
- For example, watch response contains 10 events, where each event is 1 MiB. And server `etcd --max-request-bytes` flag value is 1 MiB. Then, server will send 10 separate fragmented events to the client.
- For example, watch response contains 5 events, where each event is 2 MiB. And server `etcd --max-request-bytes` flag value is 1 MiB and `clientv3.Config.MaxCallRecvMsgSize` is 1 MiB. Then, server will try to send 5 separate fragmented events to the client, and the client will error with `"code = ResourceExhausted desc = grpc: received message larger than max (...)"`.
- Add [`Watcher.RequestProgress` method](https://github.com/coreos/etcd/pull/9869).
- To manually trigger broadcasting watch progress event (empty watch response with latest header) to all associated watch streams.
- Think of it as `WithProgressNotify` that can be triggered manually.
- Fix [lease keepalive interval updates when response queue is full](https://github.com/coreos/etcd/pull/9952).
- If `<-chan *clientv3LeaseKeepAliveResponse` from `clientv3.Lease.KeepAlive` was never consumed or channel is full, client was [sending keepalive request every 500ms](https://github.com/coreos/etcd/issues/9911) instead of expected rate of every "TTL / 3" duration.
- Change [snapshot file permissions](https://github.com/coreos/etcd/pull/9977): On Linux, the snapshot file changes from readable by all (mode 0644) to readable by the user only (mode 0600).
### etcdctl v3
- Make [`ETCDCTL_API=3 etcdctl` default](https://github.com/coreos/etcd/issues/9600).
- Now, `etcdctl set foo bar` must be `ETCDCTL_API=2 etcdctl set foo bar`.
- Now, `ETCDCTL_API=3 etcdctl put foo bar` could be just `etcdctl put foo bar`.
- Add [`etcdctl --password`](https://github.com/coreos/etcd/pull/9730) flag.
- To support [`:` character in user name](https://github.com/coreos/etcd/issues/9691).
- e.g. `etcdctl --user user --password password get foo`
- Add [`etcdctl user add --new-user-password`](https://github.com/coreos/etcd/pull/9730) flag.
- Add [`etcdctl check datascale`](https://github.com/coreos/etcd/pull/9185) command.
- Add [`etcdctl check datascale --auto-compact, --auto-defrag`](https://github.com/coreos/etcd/pull/9351) flags.
- Add [`etcdctl check perf --auto-compact, --auto-defrag`](https://github.com/coreos/etcd/pull/9330) flags.
- Add [`etcdctl defrag --cluster`](https://github.com/coreos/etcd/pull/9390) flag.
- Add ["raft applied index" field to `endpoint status`](https://github.com/coreos/etcd/pull/9176).
- Add ["errors" field to `endpoint status`](https://github.com/coreos/etcd/pull/9206).
- Add [`etcdctl endpoint health --write-out` support](https://github.com/coreos/etcd/pull/9540).
- Previously, [`etcdctl endpoint health --write-out json` did not work](https://github.com/coreos/etcd/issues/9532).
- Fix [`etcdctl watch [key] [range_end] -- [exec-command…]`](https://github.com/coreos/etcd/pull/9688) parsing.
- Previously, `ETCDCTL_API=3 etcdctl watch foo -- echo watch event received` panicked.
- Fix [`etcdctl move-leader` command for TLS-enabled endpoints](https://github.com/coreos/etcd/pull/9807).
- Add [`progress` command to `etcdctl watch --interactive`](https://github.com/coreos/etcd/pull/9869).
- To manually trigger broadcasting watch progress event (empty watch response with latest header) to all associated watch streams.
- Think of it as `WithProgressNotify` that can be triggered manually.
### gRPC proxy
- Fix [etcd server panic from restore operation](https://github.com/coreos/etcd/pull/9775).
- Let's assume that a watcher had been requested with a future revision X and sent to node A that became network-partitioned thereafter. Meanwhile, cluster makes progress. Then when the partition gets removed, the leader sends a snapshot to node A. Previously if the snapshot's latest revision is still lower than the watch revision X, **etcd server panicked** during snapshot restore operation.
- Especially, gRPC proxy was affected, since it detects a leader loss with a key `"proxy-namespace__lostleader"` and a watch revision `"int64(math.MaxInt64 - 2)"`.
- Now, this server-side panic has been fixed.
### gRPC gateway
- Replace [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) endpoint `/v3beta` with [`/v3`](https://github.com/coreos/etcd/pull/9298).
- Deprecated [`/v3alpha`](https://github.com/coreos/etcd/pull/9298).
- To deprecate [`/v3beta`](https://github.com/coreos/etcd/issues/9189) in v3.5.
- In v3.4, `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` still works as a fallback to `curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'`, but `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` won't work in v3.5. Use `curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` instead.
- Add API endpoints [`/{v3beta,v3}/lease/leases, /{v3beta,v3}/lease/revoke, /{v3beta,v3}/lease/timetolive`](https://github.com/coreos/etcd/pull/9450).
- To deprecate [`/{v3beta,v3}/kv/lease/leases, /{v3beta,v3}/kv/lease/revoke, /{v3beta,v3}/kv/lease/timetolive`](https://github.com/coreos/etcd/issues/9430) in v3.5.
- Support [`etcd --cors`](https://github.com/coreos/etcd/pull/9490) in v3 HTTP requests (gRPC gateway).
### Package `raft`
- Fix [deadlock during PreVote migration process](https://github.com/coreos/etcd/pull/8525).
- Add [`raft.ErrProposalDropped`](https://github.com/coreos/etcd/pull/9067).
- Now [`(r *raft) Step` returns `raft.ErrProposalDropped`](https://github.com/coreos/etcd/pull/9137) if a proposal has been ignored.
- e.g. a node is removed from cluster, or [`raftpb.MsgProp` arrives at current leader while there is an ongoing leadership transfer](https://github.com/coreos/etcd/issues/8975).
- Improve [Raft `becomeLeader` and `stepLeader`](https://github.com/coreos/etcd/pull/9073) by keeping track of latest `pb.EntryConfChange` index.
- Previously record `pendingConf` boolean field scanning the entire tail of the log, which can delay hearbeat send.
- Fix [missing learner nodes on `(n *node) ApplyConfChange`](https://github.com/coreos/etcd/pull/9116).
### Tooling
- Add [`etcd-dump-logs --entry-type`](https://github.com/coreos/etcd/pull/9628) flag to support WAL log filtering by entry type.
- Add [`etcd-dump-logs --stream-decoder`](https://github.com/coreos/etcd/pull/9790) flag to support custom decoder.
### Go
- Require *Go 1.10+*.
- Compile with [*Go 1.10.3*](https://golang.org/doc/devel/release.html#go1.10).

43
CHANGELOG-3.5.md Normal file
View File

@@ -0,0 +1,43 @@
Previous change logs can be found at [CHANGELOG-3.4](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.4.md).
## v3.5.0 (TBD 2018-12)
See [code changes](https://github.com/coreos/etcd/compare/v3.4.0...v3.5.0) and [v3.5 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_5.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.5 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_5.md).**
### Breaking Changes
- [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) only supports [`/v3`](TODO) endpoint.
- Deprecated [`/v3beta`](https://github.com/coreos/etcd/pull/9298).
- `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` does work in v3.5. Use `curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` instead.
- **`etcd --log-output` flag has been deprecated.** Use **`etcd --log-outputs`** instead.
- **`etcd --logger=zap --log-outputs=stderr`** is now the default.
- **`etcd --logger=capnslog` flag has been deprecated.**
- **`etcd --logger=zap --log-outputs=default` flag value is not supported.**.
- Instead, use `etcd --logger=zap --log-outputs=stderr`.
- Or, use `etcd --logger=zap --log-outputs=systemd/journal` to send logs to the local systemd journal.
- Previously, if etcd parent process ID (PPID) is 1 (e.g. run with systemd), `etcd --logger=capnslog --log-outputs=default` redirects server logs to local systemd journal. And if write to journald fails, it writes to `os.Stderr` as a fallback.
- However, even with PPID 1, it can fail to dial systemd journal (e.g. run embedded etcd with Docker container). Then, [every single log write will fail](https://github.com/coreos/etcd/pull/9729) and fall back to `os.Stderr`, which is inefficient.
- To avoid this problem, systemd journal logging must be configured manually.
- **`etcd --log-outputs=stderr`** is now the default.
- **`etcd --log-package-levels` flag for `capnslog` has been deprecated.** Now, **`etcd --logger=zap --log-outputs=stderr`** is the default.
- **`[CLIENT-URL]/config/local/log` endpoint has been deprecated, as is `etcd --log-package-levels` flag.**
- `curl http://127.0.0.1:2379/config/local/log -XPUT -d '{"Level":"DEBUG"}'` won't work.
- Please use `etcd --logger=zap --log-outputs=stderr` instead.
- Deprecated `etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metric. Instead, use `etcd_mvcc_db_total_size_in_bytes`.
### Metrics, Monitoring
See [List of metrics](https://etcd.readthedocs.io/en/latest/operate.html#latest) for all metrics per release.
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
- Deprecated `etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metric. Instead, use `etcd_mvcc_db_total_size_in_bytes`.
### gRPC gateway
- [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) only supports [`/v3`](TODO) endpoint.
- Deprecated [`/v3beta`](https://github.com/coreos/etcd/pull/9298).
- `curl -L http://localhost:2379/v3beta/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` does work in v3.5. Use `curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'` instead.

28
CHANGELOG-4.0.md Normal file
View File

@@ -0,0 +1,28 @@
Previous change logs can be found at [CHANGELOG-3.x](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.x.md).
Planned breaking changes.
## v4.0.0 (TBD)
See [code changes](https://github.com/coreos/etcd/compare/v3.3.0...v4.0.0) and [v4.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_4_0.md) for any breaking changes. **Again, before running upgrades from any previous release, please make sure to read change logs below and [v4.0 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_4_0.md).**
### Breaking Changes
- [Secure etcd by default](https://github.com/coreos/etcd/issues/9475)?
- Change `/health` endpoint output.
- Previously, `{"health":"true"}`.
- Now, `{"health":true}`.
- Breaks [Kubernetes `kubectl get componentstatuses` command](https://github.com/kubernetes/kubernetes/issues/58240).
- Deprecate [`etcd --proxy*`](TODO) flags; **no more v2 proxy**.
- Deprecate [v2 storage backend](https://github.com/coreos/etcd/issues/9232); **no more v2 store**.
- v2 API is still supported via [v2 emulation](TODO).
- Deprecate [`etcdctl backup`](TODO) command.
- `clientv3.Client.KeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAliveResponse, error)` is now [`clientv4.Client.KeepAlive(ctx context.Context, id LeaseID) <-chan *LeaseKeepAliveResponse`](TODO).
- Similar to `Watch`, [`KeepAlive` does not return errors](https://github.com/coreos/etcd/issues/7488).
- If there's an unknown server error, kill all open channels and create a new stream on the next `KeepAlive` call.
- Rename `github.com/coreos/client` to `github.com/coreos/clientv2`.

View File

@@ -1,63 +0,0 @@
## CoreOS Community Code of Conduct
### Contributor Code of Conduct
As contributors and maintainers of this project, and in the interest of
fostering an open and welcoming community, we pledge to respect all people who
contribute through reporting issues, posting feature requests, updating
documentation, submitting pull requests or patches, and other activities.
We are committed to making participation in this project a harassment-free
experience for everyone, regardless of level of experience, gender, gender
identity and expression, sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing others' private information, such as physical or electronic addresses, without explicit permission
* Other unethical or unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct. By adopting this Code of Conduct,
project maintainers commit themselves to fairly and consistently applying these
principles to every aspect of managing this project. Project maintainers who do
not follow or enforce the Code of Conduct may be permanently removed from the
project team.
This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting a project maintainer, Brandon Philips
<brandon.philips@coreos.com>, and/or Meghan Schofield
<meghan.schofield@coreos.com>.
This Code of Conduct is adapted from the Contributor Covenant
(http://contributor-covenant.org), version 1.2.0, available at
http://contributor-covenant.org/version/1/2/0/
### CoreOS Events Code of Conduct
CoreOS events are working conferences intended for professional networking and
collaboration in the CoreOS community. Attendees are expected to behave
according to professional standards and in accordance with their employers
policies on appropriate workplace behavior.
While at CoreOS events or related social networking opportunities, attendees
should not engage in discriminatory or offensive speech or actions including
but not limited to gender, sexuality, race, age, disability, or religion.
Speakers should be especially aware of these concerns.
CoreOS does not condone any statements by speakers contrary to these standards.
CoreOS reserves the right to deny entrance and/or eject from an event (without
refund) any individual found to be engaging in discriminatory or offensive
speech or actions.
Please bring any concerns to the immediate attention of designated on-site
staff, Brandon Philips <brandon.philips@coreos.com>, and/or Meghan Schofield
<meghan.schofield@coreos.com>.

View File

@@ -1,6 +0,0 @@
FROM golang
ADD . /go/src/github.com/coreos/etcd
ADD cmd/vendor /go/src/github.com/coreos/etcd/vendor
RUN go install github.com/coreos/etcd
EXPOSE 2379 2380
ENTRYPOINT ["etcd"]

View File

@@ -1,53 +0,0 @@
FROM ubuntu:17.10
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt-get -y update \
&& apt-get -y install \
build-essential \
gcc \
apt-utils \
pkg-config \
software-properties-common \
apt-transport-https \
libssl-dev \
sudo \
bash \
curl \
wget \
tar \
git \
&& apt-get -y update \
&& apt-get -y upgrade \
&& apt-get -y autoremove \
&& apt-get -y autoclean
ENV GOROOT /usr/local/go
ENV GOPATH /go
ENV PATH ${GOPATH}/bin:${GOROOT}/bin:${PATH}
ENV GO_VERSION REPLACE_ME_GO_VERSION
ENV GO_DOWNLOAD_URL https://storage.googleapis.com/golang
RUN rm -rf ${GOROOT} \
&& curl -s ${GO_DOWNLOAD_URL}/go${GO_VERSION}.linux-amd64.tar.gz | tar -v -C /usr/local/ -xz \
&& mkdir -p ${GOPATH}/src ${GOPATH}/bin \
&& go version
RUN mkdir -p ${GOPATH}/src/github.com/coreos/etcd
ADD . ${GOPATH}/src/github.com/coreos/etcd
RUN go get -v github.com/coreos/gofail \
&& pushd ${GOPATH}/src/github.com/coreos/etcd \
&& GO_BUILD_FLAGS="-v" ./build \
&& cp ./bin/etcd /etcd \
&& cp ./bin/etcdctl /etcdctl \
&& GO_BUILD_FLAGS="-v" FAILPOINTS=1 ./build \
&& cp ./bin/etcd /etcd-failpoints \
&& ./tools/functional-tester/build \
&& cp ./bin/etcd-agent /etcd-agent \
&& cp ./bin/etcd-tester /etcd-tester \
&& cp ./bin/etcd-runner /etcd-runner \
&& go build -v -o /benchmark ./cmd/tools/benchmark \
&& go build -v -o /etcd-test-proxy ./cmd/tools/etcd-test-proxy \
&& popd \
&& rm -rf ${GOPATH}/src/github.com/coreos/etcd

View File

@@ -1,4 +1,4 @@
FROM ppc64le/ubuntu:16.04
FROM ppc64le/alpine:latest
ADD etcd /usr/local/bin/
ADD etcdctl /usr/local/bin/

View File

@@ -1,58 +0,0 @@
FROM ubuntu:16.10
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN apt-get -y update \
&& apt-get -y install \
build-essential \
gcc \
apt-utils \
pkg-config \
software-properties-common \
apt-transport-https \
libssl-dev \
sudo \
bash \
curl \
wget \
tar \
git \
netcat \
libaspell-dev \
libhunspell-dev \
hunspell-en-us \
aspell-en \
shellcheck \
&& apt-get -y update \
&& apt-get -y upgrade \
&& apt-get -y autoremove \
&& apt-get -y autoclean
ENV GOROOT /usr/local/go
ENV GOPATH /go
ENV PATH ${GOPATH}/bin:${GOROOT}/bin:${PATH}
ENV GO_VERSION REPLACE_ME_GO_VERSION
ENV GO_DOWNLOAD_URL https://storage.googleapis.com/golang
RUN rm -rf ${GOROOT} \
&& curl -s ${GO_DOWNLOAD_URL}/go${GO_VERSION}.linux-amd64.tar.gz | tar -v -C /usr/local/ -xz \
&& mkdir -p ${GOPATH}/src ${GOPATH}/bin \
&& go version
RUN mkdir -p ${GOPATH}/src/github.com/coreos/etcd
WORKDIR ${GOPATH}/src/github.com/coreos/etcd
ADD ./scripts/install-marker.sh /tmp/install-marker.sh
RUN go get -v -u -tags spell github.com/chzchzchz/goword \
&& go get -v -u github.com/coreos/license-bill-of-materials \
&& go get -v -u honnef.co/go/tools/cmd/gosimple \
&& go get -v -u honnef.co/go/tools/cmd/unused \
&& go get -v -u honnef.co/go/tools/cmd/staticcheck \
&& go get -v -u github.com/gyuho/gocovmerge \
&& go get -v -u github.com/gordonklaus/ineffassign \
&& go get -v -u github.com/alexkohler/nakedret \
&& /tmp/install-marker.sh amd64 \
&& rm -f /tmp/install-marker.sh \
&& curl -s https://codecov.io/bash >/codecov \
&& chmod 700 /codecov

View File

@@ -1,3 +0,0 @@
---
title: etcd version 3.3.12
---

View File

@@ -0,0 +1,18 @@
# Benchmarks
etcd benchmarks will be published regularly and tracked for each release below:
- [etcd v2.1.0-alpha][2.1]
- [etcd v2.2.0-rc][2.2]
- [etcd v3 demo][3.0]
# Memory Usage Benchmarks
It records expected memory usage in different scenarios.
- [etcd v2.2.0-rc][2.2-mem]
[2.1]: etcd-2-1-0-alpha-benchmarks.md
[2.2]: etcd-2-2-0-rc-benchmarks.md
[2.2-mem]: etcd-2-2-0-rc-memory-benchmarks.md
[3.0]: etcd-3-demo-benchmarks.md

View File

@@ -1,3 +0,0 @@
---
title: Benchmarks
---

View File

@@ -1,7 +1,3 @@
---
title: Benchmarking etcd v2.1.0
---
## Physical machines
GCE n1-highcpu-2 machine type

View File

@@ -1,6 +1,4 @@
---
title: Benchmarking etcd v2.2.0
---
# Benchmarking etcd v2.2.0
## Physical Machines

View File

@@ -1,8 +1,4 @@
---
title: Benchmarking etcd v2.2.0-rc
---
## Physical machine
## Physical machines
GCE n1-highcpu-2 machine type

View File

@@ -1,7 +1,3 @@
---
title: Benchmarking etcd v2.2.0-rc-memory
---
## Physical machine
GCE n1-standard-2 machine type

View File

@@ -1,7 +1,3 @@
---
title: Benchmarking etcd v3
---
## Physical machines
GCE n1-highcpu-2 machine type

View File

@@ -1,6 +1,4 @@
---
title: Watch Memory Usage Benchmark
---
# Watch Memory Usage Benchmark
*NOTE*: The watch features are under active development, and their memory usage may change as that development progresses. We do not expect it to significantly increase beyond the figures stated below.

View File

@@ -1,6 +1,4 @@
---
title: Storage Memory Usage Benchmark
---
# Storage Memory Usage Benchmark
<!---todo: link storage to storage design doc-->
Two components of etcd storage consume physical memory. The etcd process allocates an *in-memory index* to speed key lookup. The process's *page cache*, managed by the operating system, stores recently-accessed data from disk for quick re-use.

View File

@@ -1,6 +1,4 @@
---
title: Branch management
---
# Branch management
## Guide

View File

@@ -1,6 +1,4 @@
---
title: Demo
---
# Demo
This series of examples shows the basic procedures for working with an etcd cluster.

View File

@@ -1,3 +0,0 @@
---
title: Developer guide
---

View File

@@ -1,6 +1,4 @@
---
title: etcd concurrency API Reference
---
### etcd concurrency API Reference
This is a generated documentation. Please read the proto files for more.

View File

@@ -1,6 +1,5 @@
---
title: Why gRPC gateway
---
## Why gRPC gateway
etcd v3 uses [gRPC][grpc] for its messaging protocol. The etcd project includes a gRPC-based [Go client][go-client] and a command line utility, [etcdctl][etcdctl], for communicating with an etcd cluster through gRPC. For languages with no gRPC support, etcd provides a JSON [gRPC gateway][grpc-gateway]. This gateway serves a RESTful proxy that translates HTTP/JSON requests into gRPC messages.
@@ -19,8 +18,6 @@ gRPC gateway endpoint has changed since etcd v3.3:
- etcd v3.5 or later uses only `[CLIENT-URL]/v3/*`.
- **`[CLIENT-URL]/v3beta/*` is deprecated**.
gRPC-gateway does not support authentication using TLS Common Name.
### Put and get keys
Use the `/v3/kv/range` and `/v3/kv/put` services to read and write keys:
@@ -51,7 +48,7 @@ curl -L http://localhost:2379/v3/kv/range \
Use the `/v3/watch` service to watch keys:
```bash
curl -N http://localhost:2379/v3/watch \
curl http://localhost:2379/v3/watch \
-X POST -d '{"create_request": {"key":"Zm9v"} }' &
# {"result":{"header":{"cluster_id":"12585971608760269493","member_id":"13847567121247652255","revision":"1","raft_term":"2"},"created":true}}
@@ -65,21 +62,12 @@ curl -L http://localhost:2379/v3/kv/put \
Issue a transaction with `/v3/kv/txn`:
```bash
# target CREATE
curl -L http://localhost:2379/v3/kv/txn \
-X POST \
-d '{"compare":[{"target":"CREATE","key":"Zm9v","createRevision":"2"}],"success":[{"requestPut":{"key":"Zm9v","value":"YmFy"}}]}'
# {"header":{"cluster_id":"12585971608760269493","member_id":"13847567121247652255","revision":"3","raft_term":"2"},"succeeded":true,"responses":[{"response_put":{"header":{"revision":"3"}}}]}
```
```bash
# target VERSION
curl -L http://localhost:2379/v3/kv/txn \
-X POST \
-d '{"compare":[{"version":"4","result":"EQUAL","target":"VERSION","key":"Zm9v"}],"success":[{"requestRange":{"key":"Zm9v"}}]}'
# {"header":{"cluster_id":"14841639068965178418","member_id":"10276657743932975437","revision":"6","raft_term":"3"},"succeeded":true,"responses":[{"response_range":{"header":{"revision":"6"},"kvs":[{"key":"Zm9v","create_revision":"2","mod_revision":"6","version":"4","value":"YmF6"}],"count":"1"}}]}
```
### Authentication
Set up authentication with the `/v3/auth` service:
@@ -130,7 +118,7 @@ Generated [Swagger][swagger] API definitions can be found at [rpc.swagger.json][
[api-ref]: ./api_reference_v3.md
[go-client]: https://github.com/coreos/etcd/tree/master/clientv3
[etcdctl]: https://github.com/coreos/etcd/tree/master/etcdctl
[grpc]: https://www.grpc.io/
[grpc]: http://www.grpc.io/
[grpc-gateway]: https://github.com/grpc-ecosystem/grpc-gateway
[json-mapping]: https://developers.google.com/protocol-buffers/docs/proto3#json
[swagger]: http://swagger.io/

View File

@@ -1,6 +1,4 @@
---
title: etcd API Reference
---
### etcd API Reference
This is a generated documentation. Please read the proto files for more.

View File

@@ -34,7 +34,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthenticateResponse"
}
@@ -61,7 +61,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthDisableResponse"
}
@@ -88,7 +88,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthEnableResponse"
}
@@ -115,7 +115,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthRoleAddResponse"
}
@@ -142,7 +142,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthRoleDeleteResponse"
}
@@ -169,7 +169,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthRoleGetResponse"
}
@@ -196,7 +196,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthRoleGrantPermissionResponse"
}
@@ -223,7 +223,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthRoleListResponse"
}
@@ -250,7 +250,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthRoleRevokePermissionResponse"
}
@@ -277,7 +277,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserAddResponse"
}
@@ -304,7 +304,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserChangePasswordResponse"
}
@@ -331,7 +331,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserDeleteResponse"
}
@@ -358,7 +358,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserGetResponse"
}
@@ -385,7 +385,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserGrantRoleResponse"
}
@@ -412,7 +412,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserListResponse"
}
@@ -439,7 +439,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAuthUserRevokeRoleResponse"
}
@@ -466,7 +466,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbMemberAddResponse"
}
@@ -493,7 +493,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbMemberListResponse"
}
@@ -520,7 +520,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbMemberRemoveResponse"
}
@@ -547,7 +547,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbMemberUpdateResponse"
}
@@ -574,7 +574,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbCompactionResponse"
}
@@ -601,7 +601,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbDeleteRangeResponse"
}
@@ -628,7 +628,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseLeasesResponse"
}
@@ -655,7 +655,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseRevokeResponse"
}
@@ -682,7 +682,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseTimeToLiveResponse"
}
@@ -709,7 +709,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbPutResponse"
}
@@ -736,7 +736,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbRangeResponse"
}
@@ -763,7 +763,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbTxnResponse"
}
@@ -790,7 +790,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseGrantResponse"
}
@@ -807,7 +807,7 @@
"operationId": "LeaseKeepAlive",
"parameters": [
{
"description": " (streaming inputs)",
"description": "(streaming inputs)",
"name": "body",
"in": "body",
"required": true,
@@ -818,7 +818,7 @@
],
"responses": {
"200": {
"description": "A successful response.(streaming responses)",
"description": "(streaming responses)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseKeepAliveResponse"
}
@@ -845,7 +845,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseLeasesResponse"
}
@@ -872,7 +872,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseRevokeResponse"
}
@@ -899,7 +899,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseTimeToLiveResponse"
}
@@ -926,7 +926,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbAlarmResponse"
}
@@ -953,7 +953,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbDefragmentResponse"
}
@@ -980,7 +980,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbHashKVResponse"
}
@@ -1007,7 +1007,7 @@
],
"responses": {
"200": {
"description": "A successful response.(streaming responses)",
"description": "(streaming responses)",
"schema": {
"$ref": "#/definitions/etcdserverpbSnapshotResponse"
}
@@ -1034,7 +1034,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbStatusResponse"
}
@@ -1061,7 +1061,7 @@
],
"responses": {
"200": {
"description": "A successful response.",
"description": "(empty)",
"schema": {
"$ref": "#/definitions/etcdserverpbMoveLeaderResponse"
}
@@ -1078,7 +1078,7 @@
"operationId": "Watch",
"parameters": [
{
"description": " (streaming inputs)",
"description": "(streaming inputs)",
"name": "body",
"in": "body",
"required": true,
@@ -1089,7 +1089,7 @@
],
"responses": {
"200": {
"description": "A successful response.(streaming responses)",
"description": "(streaming responses)",
"schema": {
"$ref": "#/definitions/etcdserverpbWatchResponse"
}

View File

@@ -21,7 +21,7 @@
"operationId": "Campaign",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/v3electionpbCampaignResponse"
}
@@ -48,7 +48,7 @@
"operationId": "Leader",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/v3electionpbLeaderResponse"
}
@@ -75,7 +75,7 @@
"operationId": "Observe",
"responses": {
"200": {
"description": "A successful response.(streaming responses)",
"description": "(streaming responses)",
"schema": {
"$ref": "#/definitions/v3electionpbLeaderResponse"
}
@@ -102,7 +102,7 @@
"operationId": "Proclaim",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/v3electionpbProclaimResponse"
}
@@ -129,7 +129,7 @@
"operationId": "Resign",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/v3electionpbResignResponse"
}

View File

@@ -21,7 +21,7 @@
"operationId": "Lock",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/v3lockpbLockResponse"
}
@@ -48,7 +48,7 @@
"operationId": "Unlock",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/v3lockpbUnlockResponse"
}

View File

@@ -1,9 +1,7 @@
---
title: Experimental APIs and features
---
# Experimental APIs and features
For the most part, the etcd project is stable, but we are still moving fast! We believe in the release fast philosophy. We want to get early feedback on features still in development and stabilizing. Thus, there are, and will be more, experimental features and APIs. We plan to improve these features based on the early feedback from the community, or abandon them if there is little interest, in the next few releases. Please do not rely on any experimental features or APIs in production environment.
## The current experimental API/features are:
- [KV ordering](https://godoc.org/github.com/etcd-io/etcd/clientv3/ordering) wrapper. When an etcd client switches endpoints, responses to serializable reads may go backward in time if the new endpoint is lagging behind the rest of the cluster. The ordering wrapper caches the current cluster revision from response headers. If a response revision is less than the cached revision, the client selects another endpoint and reissues the read. Enable in grpcproxy with `--experimental-serializable-ordering`.
- [KV ordering](https://godoc.org/github.com/coreos/etcd/clientv3/ordering) wrapper. When an etcd client switches endpoints, responses to serializable reads may go backward in time if the new endpoint is lagging behind the rest of the cluster. The ordering wrapper caches the current cluster revision from response headers. If a response revision is less than the cached revision, the client selects another endpoint and reissues the read. Enable in grpcproxy with `--experimental-serializable-ordering`.

View File

@@ -1,6 +1,4 @@
---
title: gRPC naming and discovery
---
# gRPC naming and discovery
etcd provides a gRPC resolver to support an alternative name system that fetches endpoints from etcd for discovering gRPC services. The underlying mechanism is based on watching updates to keys prefixed with the service name.
@@ -10,8 +8,8 @@ The etcd client provides a gRPC resolver for resolving gRPC endpoints with an et
```go
import (
"go.etcd.io/etcd/clientv3"
etcdnaming "go.etcd.io/etcd/clientv3/naming"
"github.com/coreos/etcd/clientv3"
etcdnaming "github.com/coreos/etcd/clientv3/naming"
"google.golang.org/grpc"
)

View File

@@ -1,12 +1,8 @@
---
title: Interacting with etcd
---
# Interacting with etcd
Users mostly interact with etcd by putting or getting the value of a key. This section describes how to do that by using etcdctl, a command line tool for interacting with etcd server. The concepts described here should apply to the gRPC APIs or client library APIs.
The API version used by etcdctl to speak to etcd may be set to version `2` or `3` via the `ETCDCTL_API` environment variable. By default, etcdctl on master (3.4) uses the v3 API and earlier versions (3.3 and earlier) default to the v2 API.
Note that any key that was created using the v2 API will not be able to be queried via the v2 API. A v3 API ```etcdctl get``` of a v2 key will exit with 0 and no key data, this is the expected behaviour.
By default, etcdctl talks to the etcd server with the v2 API for backward compatibility. For etcdctl to speak to etcd using the v3 API, the API version must be set to version 3 via the `ETCDCTL_API` environment variable. However note that any key that was created using the v2 API will not be able to be queried via the v3 API. A v3 API ```etcdctl get``` of a v2 key will exit with 0 and no key data, this is the expected behaviour.
```bash

View File

@@ -1,6 +1,4 @@
---
title: System limits
---
# System limits
## Request size limit

View File

@@ -1,6 +1,4 @@
---
title: Set up a local cluster
---
# Set up a local cluster
For testing and development deployments, the quickest and easiest way is to configure a local cluster. For a production deployment, refer to the [clustering][clustering] section.
@@ -23,7 +21,14 @@ The running etcd member listens on `localhost:2379` for client requests.
Use `etcdctl` to interact with the running cluster:
1. Store an example key-value pair in the cluster:
1. Configure the environment to have `ETCDCTL_API=3` so `etcdctl` uses the etcd API version 3 instead of defaulting to version 2.
```
# use API version 3
$ export ETCDCTL_API=3
```
2. Store an example key-value pair in the cluster:
```
$ ./etcdctl put foo bar
@@ -32,7 +37,7 @@ Use `etcdctl` to interact with the running cluster:
If OK is printed, storing key-value pair is successful.
2. Retrieve the value of `foo`:
3. Retrieve the value of `foo`:
```
$ ./etcdctl get foo
@@ -65,7 +70,14 @@ A `Procfile` at the base of the etcd git repository is provided to easily config
Use `etcdctl` to interact with the running cluster:
1. Print the list of members:
1. Configure the environment to have `ETCDCTL_API=3` so `etcdctl` uses the etcd API version 3 instead of defaulting to version 2.
```
# use API version 3
$ export ETCDCTL_API=3
```
2. Print the list of members:
```
$ etcdctl --write-out=table --endpoints=localhost:2379 member list
@@ -82,7 +94,7 @@ Use `etcdctl` to interact with the running cluster:
+------------------+---------+--------+------------------------+------------------------+
```
2. Store an example key-value pair in the cluster:
3. Store an example key-value pair in the cluster:
```
$ etcdctl put foo bar

View File

@@ -1,6 +1,4 @@
---
title: Discovery service protocol
---
# Discovery service protocol
Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery URL.

View File

@@ -1,6 +1,4 @@
---
title: Logging conventions
---
# Logging conventions
etcd uses the [capnslog][capnslog] library for logging application output categorized into *levels*. A log message's level is determined according to these conventions:

View File

@@ -1,6 +1,4 @@
---
title: etcd release guide
---
# etcd release guide
The guide talks about how to release a new version of etcd.
@@ -14,7 +12,6 @@ release and for ensuring the stability of the release branch.
| Releases | Manager |
| -------- | ------- |
| 3.1 patch (post 3.1.0) | Joe Betz [@jpbetz](https://github.com/jpbetz) |
| 3.2 patch (post 3.2.0) | Joe Betz [@jpbetz](https://github.com/jpbetz) |
| 3.3 patch (post 3.3.0) | Gyuho Lee [@gyuho](https://github.com/gyuho) |
@@ -32,9 +29,9 @@ All releases version numbers follow the format of [semantic versioning 2.0.0](ht
### Major, minor version release, or its pre-release
- Ensure the relevant milestone on GitHub is complete. All referenced issues should be closed, or moved elsewhere.
- Remove this release from [roadmap](https://github.com/etcd-io/etcd/blob/master/ROADMAP.md), if necessary.
- Remove this release from [roadmap](https://github.com/coreos/etcd/blob/master/ROADMAP.md), if necessary.
- Ensure the latest upgrade documentation is available.
- Bump [hardcoded MinClusterVerion in the repository](https://github.com/etcd-io/etcd/blob/master/version/version.go#L29), if necessary.
- Bump [hardcoded MinClusterVerion in the repository](https://github.com/coreos/etcd/blob/master/version/version.go#L29), if necessary.
- Add feature capability maps for the new version, if necessary.
### Patch version release
@@ -52,14 +49,14 @@ All releases version numbers follow the format of [semantic versioning 2.0.0](ht
## Tag version
- Bump [hardcoded Version in the repository](https://github.com/etcd-io/etcd/blob/master/version/version.go#L30) to the latest version `${VERSION}`.
- Bump [hardcoded Version in the repository](https://github.com/coreos/etcd/blob/master/version/version.go#L30) to the latest version `${VERSION}`.
- Ensure all tests on CI system are passed.
- Manually check etcd is buildable in Linux, Darwin and Windows.
- Manually check upgrade etcd cluster of previous minor version works well.
- Manually check new features work well.
- Add a signed tag through `git tag -s ${VERSION}`.
- Sanity check tag correctness through `git show tags/$VERSION`.
- Push the tag to GitHub through `git push origin tags/$VERSION`. This assumes `origin` corresponds to "https://github.com/etcd-io/etcd".
- Push the tag to GitHub through `git push origin tags/$VERSION`. This assumes `origin` corresponds to "https://github.com/coreos/etcd".
## Build release binaries and images
@@ -86,11 +83,11 @@ for i in etcd-*{.zip,.tar.gz}; do gpg2 --default-key $SUBKEYID --armor --output
for i in etcd-*{.zip,.tar.gz}; do gpg2 --verify ${i}.asc ${i}; done
# sign zipped source code files
wget https://github.com/etcd-io/etcd/archive/${VERSION}.zip
wget https://github.com/coreos/etcd/archive/${VERSION}.zip
gpg2 --armor --default-key $SUBKEYID --output ${VERSION}.zip.asc --detach-sign ${VERSION}.zip
gpg2 --verify ${VERSION}.zip.asc ${VERSION}.zip
wget https://github.com/etcd-io/etcd/archive/${VERSION}.tar.gz
wget https://github.com/coreos/etcd/archive/${VERSION}.tar.gz
gpg2 --armor --default-key $SUBKEYID --output ${VERSION}.tar.gz.asc --detach-sign ${VERSION}.tar.gz
gpg2 --verify ${VERSION}.tar.gz.asc ${VERSION}.tar.gz
```
@@ -158,5 +155,5 @@ git log ...${PREV_VERSION} --pretty=format:"%an" | sort | uniq | tr '\n' ',' | s
## Post release
- Create new stable branch through `git push origin ${VERSION_MAJOR}.${VERSION_MINOR}` if this is a major stable release. This assumes `origin` corresponds to "https://github.com/etcd-io/etcd".
- Bump [hardcoded Version in the repository](https://github.com/etcd-io/etcd/blob/master/version/version.go#L30) to the version `${VERSION}+git`.
- Create new stable branch through `git push origin ${VERSION_MAJOR}.${VERSION_MINOR}` if this is a major stable release. This assumes `origin` corresponds to "https://github.com/coreos/etcd".
- Bump [hardcoded Version in the repository](https://github.com/coreos/etcd/blob/master/version/version.go#L30) to the version `${VERSION}+git`.

View File

@@ -1,7 +1,4 @@
---
title: Download and build
weight: 1
---
# Download and build
## System requirements
@@ -18,7 +15,7 @@ For those wanting to try the very latest version, build etcd from the `master` b
To build `etcd` from the `master` branch without a `GOPATH` using the official `build` script:
```sh
$ git clone https://github.com/etcd-io/etcd.git
$ git clone https://github.com/coreos/etcd.git
$ cd etcd
$ ./build
```
@@ -29,8 +26,7 @@ To build a vendored `etcd` from the `master` branch via `go get`:
# GOPATH should be set
$ echo $GOPATH
/Users/example/go
$ go get -v go.etcd.io/etcd
$ go get -v go.etcd.io/etcd/etcdctl
$ go get -v github.com/coreos/etcd
```
## Test the installation
@@ -39,14 +35,14 @@ Check the etcd binary is built correctly by starting etcd and setting a key.
### Starting etcd
If etcd is built without using `go get`, run the following:
If etcd is built without using GOPATH, run the following:
```sh
```
$ ./bin/etcd
```
If etcd is built using `go get`, run the following:
If etcd is built using GOPATH, run the following:
```sh
```
$ $GOPATH/bin/etcd
```
@@ -54,16 +50,14 @@ $ $GOPATH/bin/etcd
Run the following:
```sh
$ ./bin/etcdctl put foo bar
```
$ ETCDCTL_API=3 ./bin/etcdctl put foo bar
OK
```
(or `$GOPATH/bin/etcdctl put foo bar` if etcdctl was installed with `go get`)
If OK is printed, then etcd is working!
[github-release]: https://github.com/etcd-io/etcd/releases/
[github-release]: https://github.com/coreos/etcd/releases/
[go]: https://golang.org/doc/install
[build-script]: ../build
[cmd-directory]: ../cmd

114
Documentation/docs.md Normal file
View File

@@ -0,0 +1,114 @@
# Documentation
etcd is a distributed key-value store designed to reliably and quickly preserve and provide access to critical data. It enables reliable distributed coordination through distributed locking, leader elections, and write barriers. An etcd cluster is intended for high availability and permanent data storage and retrieval.
## Getting started
New etcd users and developers should get started by [downloading and building][download_build] etcd. After getting etcd, follow this [quick demo][demo] to see the basics of creating and working with an etcd cluster.
## Developing with etcd
The easiest way to get started using etcd as a distributed key-value store is to [set up a local cluster][local_cluster].
- [Setting up local clusters][local_cluster]
- [Interacting with etcd][interacting]
- gRPC [etcd core][api_ref] and [etcd concurrency][api_concurrency_ref] API references
- [HTTP JSON API through the gRPC gateway][api_grpc_gateway]
- [gRPC naming and discovery][grpc_naming]
- [Client][namespace_client] and [proxy][namespace_proxy] namespacing
- [Embedding etcd][embed_etcd]
- [Experimental features and APIs][experimental]
- [System limits][system-limit]
## Operating etcd clusters
Administrators who need a fault-tolerant etcd cluster for either development or production should begin with a [cluster on multiple machines][clustering].
### Setting up etcd
- [Configuration flags][conf]
- [Multi-member cluster][clustering]
- [gRPC proxy][grpc_proxy]
- [L4 gateway][gateway]
### System configuration
- [Supported systems][supported_platforms]
- [Hardware recommendations][hardware]
- [Performance benchmarking][performance]
- [Tuning][tuning]
### Platform guides
- [Amazon Web Services][aws_platform]
- [Container Linux, systemd][container_linux_platform]
- [FreeBSD][freebsd_platform]
- [Docker container][container_docker]
- [rkt container][container_rkt]
### Security
- [TLS][security]
- [Role-based access control][authentication]
### Maintenance and troubleshooting
- [Frequently asked questions][faq]
- [Monitoring][monitoring]
- [Maintenance][maintenance]
- [Failure modes][failures]
- [Disaster recovery][recovery]
- [Upgrading][upgrading]
## Learning
To learn more about the concepts and internals behind etcd, read the following pages:
- [Why etcd?][why]
- [Understand data model][data_model]
- [Understand APIs][understand_apis]
- [Glossary][glossary]
- Internals
- [Auth subsystem][auth_design]
[api_ref]: dev-guide/api_reference_v3.md
[api_concurrency_ref]: dev-guide/api_concurrency_reference_v3.md
[api_grpc_gateway]: dev-guide/api_grpc_gateway.md
[clustering]: op-guide/clustering.md
[conf]: op-guide/configuration.md
[system-limit]: dev-guide/limit.md
[faq]: faq.md
[why]: learning/why.md
[data_model]: learning/data_model.md
[demo]: demo.md
[download_build]: dl_build.md
[embed_etcd]: https://godoc.org/github.com/coreos/etcd/embed
[grpc_naming]: dev-guide/grpc_naming.md
[failures]: op-guide/failures.md
[gateway]: op-guide/gateway.md
[glossary]: learning/glossary.md
[namespace_client]: https://godoc.org/github.com/coreos/etcd/clientv3/namespace
[namespace_proxy]: op-guide/grpc_proxy.md#namespacing
[grpc_proxy]: op-guide/grpc_proxy.md
[hardware]: op-guide/hardware.md
[interacting]: dev-guide/interacting_v3.md
[local_cluster]: dev-guide/local_cluster.md
[performance]: op-guide/performance.md
[recovery]: op-guide/recovery.md
[maintenance]: op-guide/maintenance.md
[security]: op-guide/security.md
[monitoring]: op-guide/monitoring.md
[v2_migration]: op-guide/v2-migration.md
[container_rkt]: op-guide/container.md#rkt
[container_docker]: op-guide/container.md#docker
[understand_apis]: learning/api.md
[versioning]: op-guide/versioning.md
[supported_platforms]: op-guide/supported-platform.md
[container_linux_platform]: platforms/container-linux-systemd.md
[freebsd_platform]: platforms/freebsd.md
[aws_platform]: platforms/aws.md
[experimental]: dev-guide/experimental_apis.md
[authentication]: op-guide/authentication.md
[auth_design]: learning/auth_design.md
[tuning]: tuning.md
[upgrading]: upgrades/upgrading-etcd.md

View File

@@ -0,0 +1,11 @@
# Prometheus Monitoring Mixin for etcd
> NOTE: This project is *alpha* stage. Flags, configuration, behaviour and design may change significantly in following releases.
A set of customisable Prometheus alerts for etcd.
Instructions for use are the same as the [kubernetes-mixin](https://github.com/kubernetes-monitoring/kubernetes-mixin).
## Background
* For more information about monitoring mixins, see this [design doc](https://docs.google.com/document/d/1A9xvzwqnFVSOZ5fD3blKODXfsat5fg6ZhnKu9LK3lB4/edit#).

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,4 @@
---
title: Frequently Asked Questions (FAQ)
---
# Frequently Asked Questions (FAQ)
## etcd, general
@@ -108,7 +106,7 @@ To recover from the low space quota alarm:
This is gRPC-side warning when a server receives a TCP RST flag with client-side streams being prematurely closed. For example, a client closes its connection, while gRPC server has not yet processed all HTTP/2 frames in the TCP queue. Some data may have been lost in server side, but it is ok so long as client connection has already been closed.
Only [old versions of gRPC](https://github.com/grpc/grpc-go/issues/1362) log this. etcd [>=v3.2.13 by default log this with DEBUG level](https://github.com/etcd-io/etcd/pull/9080), thus only visible with `--debug` flag enabled.
Only [old versions of gRPC](https://github.com/grpc/grpc-go/issues/1362) log this. etcd [>=v3.2.13 by default log this with DEBUG level](https://github.com/coreos/etcd/pull/9080), thus only visible with `--debug` flag enabled.
## Performance
@@ -149,14 +147,14 @@ etcd sends a snapshot of its complete key-value store to refresh slow followers
[supported-platform]: ./op-guide/supported-platform.md
[wal_fsync_duration_seconds]: ./metrics.md#disk
[tuning]: ./tuning.md
[new_issue]: https://github.com/etcd-io/etcd/issues/new
[new_issue]: https://github.com/coreos/etcd/issues/new
[backend_commit_metrics]: ./metrics.md#disk
[raft]: https://raft.github.io/raft.pdf
[backup]: https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/recovery.md#snapshotting-the-keyspace
[backup]: https://github.com/coreos/etcd/blob/master/Documentation/op-guide/recovery.md#snapshotting-the-keyspace
[chubby]: http://static.googleusercontent.com/media/research.google.com/en//archive/chubby-osdi06.pdf
[runtime reconfiguration]: https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/runtime-configuration.md
[runtime reconfiguration]: https://github.com/coreos/etcd/blob/master/Documentation/op-guide/runtime-configuration.md
[benchmark]: https://github.com/coreos/etcd/tree/master/tools/benchmark
[benchmark-result]: https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/performance.md
[benchmark-result]: https://github.com/coreos/etcd/blob/master/Documentation/op-guide/performance.md
[api-mvcc]: learning/api.md#revisions
[maintenance-compact]: op-guide/maintenance.md#history-compaction
[maintenance-defragment]: op-guide/maintenance.md#defragmentation

View File

@@ -1,11 +1,8 @@
---
title: Libraries and tools
weight: 2
---
# Libraries and tools
**Tools**
- [etcdctl](https://github.com/etcd-io/etcd/tree/master/etcdctl) - A command line client for etcd
- [etcdctl](https://github.com/coreos/etcd/tree/master/etcdctl) - A command line client for etcd
- [etcd-backup](https://github.com/fanhattan/etcd-backup) - A powerful command line utility for dumping/restoring etcd - Supports v2
- [etcd-dump](https://npmjs.org/package/etcd-dump) - Command line utility for dumping/restoring etcd.
- [etcd-fs](https://github.com/xetorthio/etcd-fs) - FUSE filesystem for etcd
@@ -22,14 +19,14 @@ weight: 2
**Go libraries**
- [etcd/clientv3](https://github.com/etcd-io/etcd/blob/master/clientv3) - the officially maintained Go client for v3
- [etcd/client](https://github.com/etcd-io/etcd/blob/master/client) - the officially maintained Go client for v2
- [etcd/clientv3](https://github.com/coreos/etcd/blob/master/clientv3) - the officially maintained Go client for v3
- [etcd/client](https://github.com/coreos/etcd/blob/master/client) - the officially maintained Go client for v2
- [go-etcd](https://github.com/coreos/go-etcd) - the deprecated official client. May be useful for older (<2.0.0) versions of etcd.
- [encWrapper](https://github.com/lumjjb/etcd/tree/enc_wrapper/clientwrap/encwrapper) - encWrapper is an encryption wrapper for the etcd client Keys API/KV.
**Java libraries**
- [coreos/jetcd](https://github.com/etcd-io/jetcd) - Supports v3
- [coreos/jetcd](https://github.com/coreos/jetcd) - Supports v3
- [boonproject/etcd](https://github.com/boonproject/boon/blob/master/etcd/README.md) - Supports v2, Async/Sync and waits
- [justinsb/jetcd](https://github.com/justinsb/jetcd)
- [diwakergupta/jetcd](https://github.com/diwakergupta/jetcd) - Supports v2
@@ -57,7 +54,6 @@ weight: 2
- [txaio-etcd](https://github.com/crossbario/txaio-etcd) - Asynchronous etcd v3-only client library for Twisted (today) and asyncio (future)
- [dims/etcd3-gateway](https://github.com/dims/etcd3-gateway) - etcd v3 API library using the HTTP grpc gateway
- [aioetcd3](https://github.com/gaopeiliang/aioetcd3) - (Python 3.6+) etcd v3 API for asyncio
- [Revolution1/etcd3-py](https://github.com/Revolution1/etcd3-py) - (python2.7 and python3.5+) Python client for etcd v3, using gRPC-JSON-Gateway
**Node libraries**
@@ -93,8 +89,7 @@ weight: 2
**Erlang libraries**
- [marshall-lee/etcd.erl](https://github.com/marshall-lee/etcd.erl) - Supports v2
- [zhongwencool/eetcd](https://github.com/zhongwencool/eetcd) - Supports v3+ (GRPC only)
- [marshall-lee/etcd.erl](https://github.com/marshall-lee/etcd.erl)
**.Net Libraries**
@@ -146,7 +141,6 @@ weight: 2
- [cloudfoundry/cf-release](https://github.com/cloudfoundry/cf-release/tree/master/jobs/etcd)
**Projects using etcd**
- [etcd Raft users](../raft/README.md#notable-users) - projects using etcd's raft library implementation.
- [apache/celix](https://github.com/apache/celix) - an implementation of the OSGi specification adapted to C and C++
- [binocarlos/yoda](https://github.com/binocarlos/yoda) - etcd + ZeroMQ
@@ -173,9 +167,4 @@ weight: 2
- [Vitess](http://vitess.io/) - Vitess is a database clustering system for horizontal scaling of MySQL.
- [lclarkmichalek/etcdhcp](https://github.com/lclarkmichalek/etcdhcp) - DHCP server that uses etcd for persistence and coordination.
- [openstack/networking-vpp](https://github.com/openstack/networking-vpp) - A networking driver that programs the [FD.io VPP dataplane](https://wiki.fd.io/view/VPP) to provide [OpenStack](https://www.openstack.org/) cloud virtual networking
- [OpenStack](https://github.com/openstack/governance/blob/master/reference/base-services.rst) - OpenStack services can rely on etcd as a base service.
- [CoreDNS](https://github.com/coredns/coredns/tree/master/plugin/etcd) - CoreDNS is a DNS server that chains plugins, part of CNCF and Kubernetes
- [Uber M3](https://github.com/m3db/m3) - M3: Ubers Open Source, Large-scale Metrics Platform for Prometheus
- [Rook](https://github.com/rook/rook) - Storage Orchestration for Kubernetes
- [Patroni](https://github.com/zalando/patroni) - A template for PostgreSQL High Availability with ZooKeeper, etcd, or Consul
- [Trillian](https://github.com/google/trillian) - Trillian implements a Merkle tree whose contents are served from a data storage layer, to allow scalability to extremely large trees.
- [openstack](https://github.com/openstack/governance/blob/master/reference/base-services.rst) - OpenStack services can rely on etcd as a base service.

View File

@@ -1,3 +0,0 @@
---
title: Learning
---

View File

@@ -1,6 +1,4 @@
---
title: etcd3 API
---
# etcd3 API
This document is meant to give an overview of the etcd3 API's central design. It is by no means all encompassing, but intended to focus on the basic ideas needed to understand etcd without the distraction of less common API calls. All etcd3 API's are defined in [gRPC services][grpc-service], which categorize remote procedure calls (RPCs) understood by the etcd server. A full listing of all etcd RPCs are documented in markdown in the [gRPC API listing][grpc-api].
@@ -474,10 +472,10 @@ message LeaseKeepAliveResponse {
* ID - the lease that was refreshed with a new TTL.
* TTL - the new time-to-live, in seconds, that the lease has remaining.
[elections]: https://github.com/etcd-io/etcd/blob/master/clientv3/concurrency/election.go
[kv-proto]: https://github.com/etcd-io/etcd/blob/master/mvcc/mvccpb/kv.proto
[elections]: https://github.com/coreos/etcd/blob/master/clientv3/concurrency/election.go
[kv-proto]: https://github.com/coreos/etcd/blob/master/mvcc/mvccpb/kv.proto
[grpc-api]: ../dev-guide/api_reference_v3.md
[grpc-service]: https://github.com/etcd-io/etcd/blob/master/etcdserver/etcdserverpb/rpc.proto
[locks]: https://github.com/etcd-io/etcd/blob/master/clientv3/concurrency/mutex.go
[grpc-service]: https://github.com/coreos/etcd/blob/master/etcdserver/etcdserverpb/rpc.proto
[locks]: https://github.com/coreos/etcd/blob/master/clientv3/concurrency/mutex.go
[mvcc]: https://en.wikipedia.org/wiki/Multiversion_concurrency_control
[stm]: https://github.com/etcd-io/etcd/blob/master/clientv3/concurrency/stm.go
[stm]: https://github.com/coreos/etcd/blob/master/clientv3/concurrency/stm.go

View File

@@ -1,6 +1,4 @@
---
title: KV API guarantees
---
# KV API guarantees
etcd is a consistent and durable key value store with [mini-transaction][txn] support. The key value store is exposed through the KV APIs. etcd tries to ensure the strongest consistency and durability guarantees for a distributed system. This specification enumerates the KV API guarantees made by etcd.

View File

@@ -1,6 +1,4 @@
---
title: etcd v3 authentication design
---
# etcd v3 authentication design
## Why not reuse the v2 auth system?
@@ -28,7 +26,7 @@ The metadata for auth should also be stored and managed in the storage controlle
The authentication mechanism in the etcd v2 protocol has a tricky part because the metadata consistency should work as in the above, but does not: each permission check is processed by the etcd member that receives the client request (etcdserver/api/v2http/client.go), including follower members. Therefore, it's possible the check may be based on stale metadata.
This staleness means that auth configuration cannot be reflected as soon as operators execute etcdctl. Therefore there is no way to know how long the stale metadata is active. Practically, the configuration change is reflected immediately after the command execution. However, in some cases of heavy load, the inconsistent state can be prolonged and it might result in counter-intuitive situations for users and developers. It requires a workaround like this: https://github.com/etcd-io/etcd/pull/4317#issuecomment-179037582
This staleness means that auth configuration cannot be reflected as soon as operators execute etcdctl. Therefore there is no way to know how long the stale metadata is active. Practically, the configuration change is reflected immediately after the command execution. However, in some cases of heavy load, the inconsistent state can be prolonged and it might result in counter-intuitive situations for users and developers. It requires a workaround like this: https://github.com/coreos/etcd/pull/4317#issuecomment-179037582
### Inconsistent permissions are unsafe for linearized requests

View File

@@ -1,114 +0,0 @@
---
title: etcd client architecture
weight: 1
---
## Introduction
etcd server has proven its robustness with years of failure injection testing. Most complex application logic is already handled by etcd server and its data stores (e.g. cluster membership is transparent to clients, with Raft-layer forwarding proposals to leader). Although server components are correct, its composition with client requires a different set of intricate protocols to guarantee its correctness and high availability under faulty conditions. Ideally, etcd server provides one logical cluster view of many physical machines, and client implements automatic failover between replicas. This documents client architectural decisions and its implementation details.
## Glossary
**clientv3** --- etcd Official Go client for etcd v3 API.
**clientv3-grpc1.0** --- Official client implementation, with [grpc-go v1.0.x](https://github.com/grpc/grpc-go/releases/tag/v1.0.0), which is used in latest etcd v3.1.
**clientv3-grpc1.7** --- Official client implementation, with [grpc-go v1.7.x](https://github.com/grpc/grpc-go/releases/tag/v1.7.0), which is used in latest etcd v3.2 and v3.3.
**clientv3-grpc1.14** --- Official client implementation, with [grpc-go v1.14.x](https://github.com/grpc/grpc-go/releases/tag/v1.14.0), which is used in latest etcd v3.4.
**Balancer** --- etcd client load balancer that implements retry and failover mechanism. etcd client should automatically balance loads between multiple endpoints.
**Endpoints** --- A list of etcd server endpoints that clients can connect to. Typically, 3 or 5 client URLs of an etcd cluster.
**Pinned endpoint** --- When configured with multiple endpoints, <= v3.3 client balancer chooses only one endpoint to establish a TCP connection, in order to conserve total open connections to etcd cluster. In v3.4, balancer round-robins pinned endpoints for every request, thus distributing loads more evenly.
**Client Connection** --- TCP connection that has been established to an etcd server, via gRPC Dial.
**Sub Connection** --- gRPC SubConn interface. Each sub-connection contains a list of addresses. Balancer creates a SubConn from a list of resolved addresses. gRPC ClientConn can map to multiple SubConn (e.g. example.com resolves to `10.10.10.1` and `10.10.10.2` of two sub-connections). etcd v3.4 balancer employs internal resolver to establish one sub-connection for each endpoint.
**Transient disconnect** --- When gRPC server returns a status error of [code Unavailable](https://godoc.org/google.golang.org/grpc/codes#Code).
## Client requirements
**Correctness** --- Requests may fail in the presence of server faults. However, it never violates consistency guarantees: global ordering properties, never write corrupted data, at-most once semantics for mutable operations, watch never observes partial events, and so on.
**Liveness** --- Servers may fail or disconnect briefly. Clients should make progress in either way. Clients should [never deadlock](https://github.com/etcd-io/etcd/issues/8980) waiting for a server to come back from offline, unless configured to do so. Ideally, clients detect unavailable servers with HTTP/2 ping and failover to other nodes with clear error messages.
**Effectiveness** --- Clients should operate effectively with minimum resources: previous TCP connections should be [gracefully closed](https://github.com/etcd-io/etcd/issues/9212) after endpoint switch. Failover mechanism should effectively predict the next replica to connect, without wastefully retrying on failed nodes.
**Portability** --- Official client should be clearly documented and its implementation be applicable to other language bindings. Error handling between different language bindings should be consistent. Since etcd is fully committed to gRPC, implementation should be closely aligned with gRPC long-term design goals (e.g. pluggable retry policy should be compatible with [gRPC retry](https://github.com/grpc/proposal/blob/master/A6-client-retries.md)). Upgrades between two client versions should be non-disruptive.
## Client overview
The etcd client implements the following components:
* balancer that establishes gRPC connections to an etcd cluster,
* API client that sends RPCs to an etcd server, and
* error handler that decides whether to retry a failed request or switch endpoints.
Languages may differ in how to establish an initial connection (e.g. configure TLS), how to encode and send Protocol Buffer messages to server, how to handle stream RPCs, and so on. However, errors returned from etcd server will be the same. So should be error handling and retry policy.
For example, etcd server may return `"rpc error: code = Unavailable desc = etcdserver: request timed out"`, which is transient error that expects retries. Or return `rpc error: code = InvalidArgument desc = etcdserver: key is not provided`, which means request was invalid and should not be retried. Go client can parse errors with `google.golang.org/grpc/status.FromError`, and Java client with `io.grpc.Status.fromThrowable`.
### clientv3-grpc1.0: Balancer Overview
`clientv3-grpc1.0` maintains multiple TCP connections when configured with multiple etcd endpoints. Then pick one address and use it to send all client requests. The pinned address is maintained until the client object is closed (see *Figure 1*). When the client receives an error, it randomly picks another and retries.
{{< figure src="/img/client-architecture-balancer-figure-01.png" >}}
### clientv3-grpc1.0: Balancer Limitation
`clientv3-grpc1.0` opening multiple TCP connections may provide faster balancer failover but requires more resources. The balancer does not understand nodes health status or cluster membership. So, it is possible that balancer gets stuck with one failed or partitioned node.
### clientv3-grpc1.7: Balancer Overview
`clientv3-grpc1.7` maintains only one TCP connection to a chosen etcd server. When given multiple cluster endpoints, a client first tries to connect to them all. As soon as one connection is up, balancer pins the address, closing others (see **Figure 2**).
{{< figure src="/img/client-architecture-balancer-figure-02.png" >}}
The pinned address is to be maintained until the client object is closed. An error, from server or client network fault, is sent to client error handler (see **Figure 3**).
{{< figure src="/img/client-architecture-balancer-figure-03.png" >}}
The client error handler takes an error from gRPC server, and decides whether to retry on the same endpoint, or to switch to other addresses, based on the error code and message (see **Figure 4** and **Figure 5**).
{{< figure src="/img/client-architecture-balancer-figure-04.png" >}}
{{< figure src="/img/client-architecture-balancer-figure-05.png" >}}
Stream RPCs, such as Watch and KeepAlive, are often requested with no timeouts. Instead, client can send periodic HTTP/2 pings to check the status of a pinned endpoint; if the server does not respond to the ping, balancer switches to other endpoints (see **Figure 6**).
{{< figure src="/img/client-architecture-balancer-figure-06.png" >}}
### clientv3-grpc1.7: Balancer Limitation
`clientv3-grpc1.7` balancer sends HTTP/2 keepalives to detect disconnects from streaming requests. It is a simple gRPC server ping mechanism and does not reason about cluster membership, thus unable to detect network partitions. Since partitioned gRPC server can still respond to client pings, balancer may get stuck with a partitioned node. Ideally, keepalive ping detects partition and triggers endpoint switch, before request time-out (see [issue #8673](https://github.com/etcd-io/etcd/issues/8673) and **Figure 7**).
{{< figure src="/img/client-architecture-balancer-figure-07.png" >}}
`clientv3-grpc1.7` balancer maintains a list of unhealthy endpoints. Disconnected addresses are added to “unhealthy” list, and considered unavailable until after wait duration, which is hard coded as dial timeout with default value 5-second. Balancer can have false positives on which endpoints are unhealthy. For instance, endpoint A may come back right after being blacklisted, but still unusable for next 5 seconds (see **Figure 8**).
`clientv3-grpc1.0` suffered the same problems above.
{{< figure src="/img/client-architecture-balancer-figure-08.png" >}}
Upstream gRPC Go had already migrated to new balancer interface. For example, `clientv3-grpc1.7` underlying balancer implementation uses new gRPC balancer and tries to be consistent with old balancer behaviors. While its compatibility has been maintained reasonably well, etcd client still [suffered from subtle breaking changes](https://github.com/grpc/grpc-go/issues/1649). Furthermore, gRPC maintainer recommends [not relying on the old balancer interface](https://github.com/grpc/grpc-go/issues/1942#issuecomment-375368665). In general, to get better support from upstream, it is best to be in sync with latest gRPC releases. And new features, such as retry policy, may not be backported to gRPC 1.7 branch. Thus, both etcd server and client must migrate to latest gRPC versions.
### clientv3-grpc1.14: Balancer Overview
`clientv3-grpc1.7` is so tightly coupled with old gRPC interface, that every single gRPC dependency upgrade broke client behavior. Majority of development and debugging efforts were devoted to fixing those client behavior changes. As a result, its implementation has become overly complicated with bad assumptions on server connectivities.
The primary goal of `clientv3-grpc1.14` is to simplify balancer failover logic; rather than maintaining a list of unhealthy endpoints, which may be stale, simply roundrobin to the next endpoint whenever client gets disconnected from the current endpoint. It does not assume endpoint status. Thus, no more complicated status tracking is needed (see *Figure 8* and above). Upgrading to `clientv3-grpc1.14` should be no issue; all changes were internal while keeping all the backward compatibilities.
Internally, when given multiple endpoints, `clientv3-grpc1.14` creates multiple sub-connections (one sub-connection per each endpoint), while `clientv3-grpc1.7` creates only one connection to a pinned endpoint (see *Figure 9*). For instance, in 5-node cluster, `clientv3-grpc1.14` balancer would require 5 TCP connections, while `clientv3-grpc1.7` only requires one. By preserving the pool of TCP connections, `clientv3-grpc1.14` may consume more resources but provide more flexible load balancer with better failover performance. The default balancing policy is round robin but can be easily extended to support other types of balancers (e.g. power of two, pick leader, etc.). `clientv3-grpc1.14` uses gRPC resolver group and implements balancer picker policy, in order to delegate complex balancing work to upstream gRPC. On the other hand, `clientv3-grpc1.7` manually handles each gRPC connection and balancer failover, which complicates the implementation. `clientv3-grpc1.14` implements retry in the gRPC interceptor chain that automatically handles gRPC internal errors and enables more advanced retry policies like backoff, while `clientv3-grpc1.7` manually interprets gRPC errors for retries.
{{< figure src="/img/client-architecture-balancer-figure-09.png" >}}
### clientv3-grpc1.14: Balancer Limitation
Improvements can be made by caching the status of each endpoint. For instance, balancer can ping each server in advance to maintain a list of healthy candidates, and use this information when doing round-robin. Or when disconnected, balancer can prioritize healthy endpoints. This may complicate the balancer implementation, thus can be addressed in later versions.
Client-side keepalive ping still does not reason about network partitions. Streaming request may get stuck with a partitioned node. Advanced health checking service need to be implemented to understand the cluster membership (see [issue #8673](https://github.com/etcd-io/etcd/issues/8673) for more detail).
Currently, retry logic is handled manually as an interceptor. This may be simplified via [official gRPC retries](https://github.com/grpc/proposal/blob/master/A6-client-retries.md).

View File

@@ -1,157 +0,0 @@
---
title: Client feature matrix
---
## Features
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
Automatic retry | Yes | .
Retry backoff | Yes | .
Automatic failover | Yes | .
Load balancer | Round-Robin | ·
`WithRequireLeader(context.Context)` | Yes | .
`TLS` | Yes | Yes
`SetEndpoints` | Yes | .
`Sync` endpoints | Yes | .
`AutoSyncInterval` | Yes | .
`KeepAlive` ping | Yes | .
`MaxCallSendMsgSize` | Yes | .
`MaxCallRecvMsgSize` | Yes | .
`RejectOldCluster` | Yes | .
## [KV](https://godoc.org/go.etcd.io/etcd/clientv3#KV)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`Put` | Yes | .
`Get` | Yes | .
`Delete` | Yes | .
`Compact` | Yes | .
`Do(Op)` | Yes | .
`Txn` | Yes | .
## [Lease](https://godoc.org/go.etcd.io/etcd/clientv3#Lease)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`Grant` | Yes | .
`Revoke` | Yes | .
`TimeToLive` | Yes | .
`Leases` | Yes | .
`KeepAlive` | Yes | .
`KeepAliveOnce` | Yes | .
## [Watcher](https://godoc.org/go.etcd.io/etcd/clientv3#Watcher)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`Watch` | Yes | Yes
`RequestProgress` | Yes | .
## [Cluster](https://godoc.org/go.etcd.io/etcd/clientv3#Cluster)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`MemberList` | Yes | Yes
`MemberAdd` | Yes | Yes
`MemberRemove` | Yes | Yes
`MemberUpdate` | Yes | Yes
## [Maintenance](https://godoc.org/go.etcd.io/etcd/clientv3#Maintenance)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`AlarmList` | Yes | Yes
`AlarmDisarm` | Yes | ·
`Defragment` | Yes | ·
`Status` | Yes | ·
`HashKV` | Yes | ·
`Snapshot` | Yes | ·
`MoveLeader` | Yes | ·
## [Auth](https://godoc.org/go.etcd.io/etcd/clientv3#Auth)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`AuthEnable` | Yes | .
`AuthDisable` | Yes | .
`UserAdd` | Yes | .
`UserDelete` | Yes | .
`UserChangePassword` | Yes | .
`UserGrantRole` | Yes | .
`UserGet` | Yes | .
`UserList` | Yes | .
`UserRevokeRole` | Yes | .
`RoleAdd` | Yes | .
`RoleGrantPermission` | Yes | .
`RoleGet` | Yes | .
`RoleList` | Yes | .
`RoleRevokePermission` | Yes | .
`RoleDelete` | Yes | .
## [clientv3util](https://godoc.org/go.etcd.io/etcd/clientv3/clientv3util)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`KeyExists` | Yes | No
`KeyMissing` | Yes | No
## [Concurrency](https://godoc.org/go.etcd.io/etcd/clientv3/concurrency)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`Session` | Yes | No
`NewMutex(Session, prefix)` | Yes | No
`NewElection(Session, prefix)` | Yes | No
`NewLocker(Session, prefix)` | Yes | No
`STM Isolation SerializableSnapshot` | Yes | No
`STM Isolation Serializable` | Yes | No
`STM Isolation RepeatableReads` | Yes | No
`STM Isolation ReadCommitted` | Yes | No
`STM Get` | Yes | No
`STM Put` | Yes | No
`STM Rev` | Yes | No
`STM Del` | Yes | No
## [Leasing](https://godoc.org/go.etcd.io/etcd/clientv3/leasing)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`NewKV(Client, prefix)` | Yes | No
## [Mirror](https://godoc.org/go.etcd.io/etcd/clientv3/mirror)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`SyncBase` | Yes | No
`SyncUpdates` | Yes | No
## [Namespace](https://godoc.org/go.etcd.io/etcd/clientv3/namespace)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`KV` | Yes | No
`Lease` | Yes | No
`Watcher` | Yes | No
## [Naming](https://godoc.org/go.etcd.io/etcd/clientv3/naming)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`GRPCResolver` | Yes | No
## [Ordering](https://godoc.org/go.etcd.io/etcd/clientv3/ordering)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`KV` | Yes | No
## [Snapshot](https://godoc.org/go.etcd.io/etcd/clientv3/snapshot)
Feature | `clientv3-grpc1.14` | `jetcd v0.0.2`
:-------|:--------------------|:--------------
`Save` | Yes | No
`Status` | Yes | No
`Restore` | Yes | No

View File

@@ -1,6 +1,4 @@
---
title: Data model
---
# Data model
etcd is designed to reliably store infrequently updated data and provide reliable watch queries. etcd exposes previous versions of key-value pairs to support inexpensive snapshots and watch history events (“time travel queries”). A persistent, multi-version, concurrency-control data model is a good fit for these use cases.

View File

@@ -1,6 +1,4 @@
---
title: Glossary
---
# Glossary
This document defines the various terms used in etcd documentation, command line and source code.

View File

@@ -1,106 +0,0 @@
---
title: Learner
---
## Background
Membership reconfiguration has been one of the biggest operational challenges. Lets review common challenges.
A newly joined etcd member starts with no data, thus demanding more updates from leader until it catches up with leaders logs. Then leaders network is more likely to be overloaded, blocking or dropping leader heartbeats to followers. In such case, a follower may election-timeout to start a new leader election. That is, a cluster with a new member is more vulnerable to leader election. Both leader election and the subsequent update propagation to the new member are prone to causing periods of cluster unavailability (see **Figure 1** below).
{{< figure src="/img/server-learner-figure-01.png" >}}
What if network partition happens? It depends on leader partition. If the leader still maintains the active quorum, the cluster would continue to operate (see **Figure 2**).
{{< figure src="/img/server-learner-figure-02.png" >}}
What if the leader becomes isolated from the rest of the cluster? Leader monitors progress of each follower. When leader loses connectivity from the quorum it reverts back to follower which will affect the cluster availability (see **Figure 3**).
{{< figure src="/img/server-learner-figure-03.png" >}}
When a new node is added to 3 node cluster, the cluster size becomes 4 and the quorum size becomes 3. What if a new node had joined the cluster, and then network partition happens? It depends on which partition the new member gets located after partition. If the new node happens to be located in the same partition as leaders, the leader still maintains the active quorum of 3. No leadership election happens, and no cluster availability gets affected (see **Figure 4**).
{{< figure src="/img/server-learner-figure-04.png" >}}
If the cluster is 2-and-2 partitioned, then neither of partition maintains the quorum of 3. In this case, leadership election happens (see **Figure 5**).
{{< figure src="/img/server-learner-figure-05.png" >}}
What if network partition happens first, and then a new member gets added? A partitioned 3-node cluster already has one disconnected follower. When a new member is added, the quorum changes from 2 to 3. Now, this cluster has only 2 active nodes out 4, thus losing quorum and starting a new leadership election (see **Figure 6**).
{{< figure src="/img/server-learner-figure-06.png" >}}
Since member add operation can change the size of quorum, it is always recommended to “member remove” first to replace an unhealthy node.
Adding a new member to a 1-node cluster changes the quorum size to 2, immediately causing a leader election when the previous leader finds out quorum is not active. This is because “member add” operation is a 2-step process where user needs to apply “member add” command first, and then starts the new node process (see **Figure 7**).
{{< figure src="/img/server-learner-figure-07.png" >}}
An even worse case is when an added member is misconfigured. Membership reconfiguration is a two-step process: “etcdctl member add” and starting an etcd server process with the given peer URL. That is, “member add” command is applied regardless of URL, even when the URL value is invalid. If the first step is applied with invalid URLs, the second step cannot even start the new etcd. Once the cluster loses quorum, there is no way to revert the membership change (see **Figure 8**).
{{< figure src="/img/server-learner-figure-08.png" >}}
Same applies to a multi-node cluster. For example, the cluster has two members down (one is failed, the other is misconfigured) and two members up, but now it requires at least 3 votes to change the cluster membership (see **Figure 9**).
{{< figure src="/img/server-learner-figure-09.png" >}}
As seen above, a simple misconfiguration can fail the whole cluster into an inoperative state. In such case, an operator need manually recreate the cluster with `etcd --force-new-cluster` flag. As etcd has become a mission-critical service for [Kubernetes](https://kubernetes.io), even the slightest outage may have significant impact on users. What can we better to make etcd such operations easier? Among other things, leader election is most critical to cluster availability: Can we make membership reconfiguration less disruptive by not changing the size of quorum? Can a new node be idle, only requesting the minimum updates from leader, until it catches up? Can membership misconfiguration be always reversible and handled in a more secure way (wrong member add command run should never fail the cluster)? Should an user worry about network topology when adding a new member? Can member add API work regardless of the location of nodes and ongoing network partitions?
## Raft learner
In order to mitigate such availability gaps in the previous section, [Raft §4.2.1](https://ramcloud.stanford.edu/~ongaro/thesis.pdf) introduces a new node state “Learner,” which joins the cluster as a **non-voting member** until it catches up to the leaders logs.
## Features in v3.4
An operator should do the minimum amount of work possible to add a new learner node. `member add --learner` command to add a new learner, which joins cluster as a non-voting member but still receives all data from leader (see **Figure 10**).
{{< figure src="/img/server-learner-figure-10.png" >}}
When a learner has caught up with leaders progress, the learner can be promoted to a voting member using the `member promote` API, which then counts towards the quorum (see **Figure 11**).
{{< figure src="/img/server-learner-figure-11.png" >}}
etcd server validates promote request to ensure its operational safety. Only after its log has caught up to leaders can learner be promoted to a voting member (see **Figure 12**).
{{< figure src="/img/server-learner-figure-12.png" >}}
Learner only serves as a standby node until promoted: Leadership cannot be transferred to learner. Learner rejects client reads and writes (client balancer should not route requests to learner). Which means learner does not need issue Read Index requests to leader. Such limitation simplifies the initial learner implementation in v3.4 release (see **Figure 13**).
{{< figure src="/img/server-learner-figure-13.png" >}}
In addition, etcd limits the total number of learners that a cluster can have, and avoids overloading the leader with log replication. Learner never promotes itself. While etcd provides learner status information and safety checks, cluster operator must make the final decision whether to promote learner or not.
## Features in v3.5
**Make learner state only and default** --- Defaulting a new member state to learner will greatly improve membership reconfiguration safety, because learner does not change the size of quorum. Misconfiguration will always be reversible without losing the quorum.
**Make voting-member promotion fully automatic** --- Once a learner catches up to leaders logs, a cluster can automatically promote the learner. etcd requires certain thresholds to be defined by the user, and once the requirements are satisfied, learner promotes itself to a voting member. From a users perspective, “member add” command would work the same way as today but with greater safety provided by learner feature.
**Make learner standby failover node** --- A learner joins as a standby node, and gets automatically promoted when the cluster availability is affected.
**Make learner read-only** --- A learner can serve as a read-only node that never gets promoted. In a weak consistency mode, learner only receives data from leader and never process writes. Serving reads locally without consensus overhead would greatly decrease the workloads to leader but may serve stale data. In a strong consistency mode, learner requests read index from leader to serve latest data, but still rejects writes.
## Learner vs. mirror maker
etcd implements “mirror maker” using watch API to continuously relay key creates and updates to a separate cluster. Mirroring usually has low latency overhead once it completes initial synchronization. Learner and mirroring overlap in that both can be used to replicate existing data for read-only. However, mirroring does not guarantee linearizability. During network disconnects, previous key-values might have been discarded, and clients are expected to verify watch responses for correct ordering. Thus, there is no ordering guarantee in mirror. Use mirror for minimum latency (e.g. cross data center) at the costs of consistency. Use learner to retain all historical data and its ordering.
## Appendix: learner implementation in v3.4
### Expose "Learner" node type to "MemberAdd" API
etcd client adds a flag to “MemberAdd” API for learner node. And etcd server handler applies membership change entry with `pb.ConfChangeAddLearnerNode` type. Once the command has been applied, a server joins the cluster with `etcd --initial-cluster-state=existing` flag. This learner node can neither vote nor count as quorum.
etcd server must not transfer leadership to learner, since it may still lag behind and does not count as quorum. etcd server limits the number of learners that cluster can have to one: the more learners we have, the more data the leader has to propagate. Clients may talk to learner node, but learner rejects all requests other than serializable read and member status API. This is for simplicity of initial implementation. In the future, learner can be extended as a read-only server that continuously mirrors cluster data. Client balancer must provide helper function to exclude learner node endpoint. Otherwise, request sent to learner may fail. Client sync member call should factor into learner node type. So should client endpoints update call.
`MemberList` and `MemberStatus` responses should indicate which node is learner.
### Add "MemberPromote" API
Internally in Raft, second `MemberAdd` call to learner node promotes it to a voting member. Leader maintains the progress of each follower and learner. If learner has not completed its snapshot message, reject promote request. Only accept promote request if and only if: The learner node is in a healthy state. The learner is in sync with leader or the delta is within the threshold (e.g. the number of entries to replicate to learner is less than 1/10 of snapshot count, which means it is less likely that even after promotion leader would not need send snapshot to the learner). All these logic are hard-coded in `etcdserver` package and not configurable.
## Reference
* Original GitHub issue ([issue #9161](https://github.com/etcd-io/etcd/issues/9161))
* Use case ([issue #3715](https://github.com/etcd-io/etcd/issues/3715))
* Use case ([issue #8888](https://github.com/etcd-io/etcd/issues/8888))
* Use case ([issue #10114](https://github.com/etcd-io/etcd/issues/10114))

View File

@@ -1,6 +1,4 @@
---
title: etcd versus other key-value stores
---
# etcd versus other key-value stores
The name "etcd" originated from two ideas, the unix "/etc" folder and "d"istributed systems. The "/etc" folder is a place to store configuration data for a single system whereas etcd stores configuration information for large scale distributed systems. Hence, a "d"istributed "/etc" is "etcd".
@@ -78,18 +76,18 @@ In theory, its possible to build these primitives atop any storage systems pr
For distributed coordination, choosing etcd can help prevent operational headaches and save engineering effort.
[production-users]: ../production-users.md
[grpc]: https://www.grpc.io
[grpc]: http://www.grpc.io
[consul-bulletproof]: https://www.consul.io/docs/internals/sessions.html
[curator]: http://curator.apache.org/
[cockroach]: https://github.com/cockroachdb/cockroach
[spanner]: https://cloud.google.com/spanner/
[tidb]: https://github.com/pingcap/tidb
[etcd-v3lock]: https://godoc.org/github.com/etcd-io/etcd/etcdserver/api/v3lock/v3lockpb
[etcd-v3election]: https://godoc.org/github.com/coreos/etcd-io/etcdserver/api/v3election/v3electionpb
[etcd-v3lock]: https://godoc.org/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb
[etcd-v3election]: https://godoc.org/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb
[etcd-etcdctl-lock]: ../../etcdctl/README.md#lock-lockname-command-arg1-arg2-
[etcd-etcdctl-elect]: ../../etcdctl/README.md#elect-options-election-name-proposal
[etcd-mvcc]: data_model.md
[etcd-recipe]: https://godoc.org/github.com/etcd-io/etcd/contrib/recipes
[etcd-recipe]: https://godoc.org/github.com/coreos/etcd/contrib/recipes
[consul-lock]: https://www.consul.io/docs/commands/lock.html
[newsql-leader]: http://dl.acm.org/citation.cfm?id=2960999
[etcd-reconfig]: ../op-guide/runtime-configuration.md
@@ -114,5 +112,5 @@ For distributed coordination, choosing etcd can help prevent operational headach
[zk-bindings]: https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#ch_bindings
[container-linux]: https://coreos.com/why
[locksmith]: https://github.com/coreos/locksmith
[kubernetes]: https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
[kubernetes]: http://kubernetes.io/docs/whatisk8s
[dbtester-comparison-results]: https://github.com/coreos/dbtester/tree/master/test-results/2018Q1-02-etcd-zookeeper-consul

View File

@@ -1,7 +1,4 @@
---
title: Metrics
weight: 3
---
# Metrics
etcd uses [Prometheus][prometheus] for metrics reporting. The metrics can be used for real-time monitoring and debugging. etcd does not persist its metrics; if a member restarts, the metrics will be reset.
@@ -102,7 +99,7 @@ Abnormally high snapshot duration (`snapshot_save_total_duration_seconds`) indic
## Prometheus supplied metrics
The Prometheus client library provides a number of metrics under the `go` and `process` namespaces. There are a few that are particularly interesting.
The Prometheus client library provides a number of metrics under the `go` and `process` namespaces. There are a few that are particlarly interesting.
| Name | Description | Type |
|-----------------------------------|--------------------------------------------|--------------|
@@ -116,4 +113,4 @@ Heavy file descriptor (`process_open_fds`) usage (i.e., near the process's file
[prometheus-getting-started]: http://prometheus.io/docs/introduction/getting_started/
[prometheus-naming]: http://prometheus.io/docs/practices/naming/
[v2-http-metrics]: v2/metrics.md#http-requests
[go-grpc-prometheus]: https://github.com/grpc-ecosystem/go-grpc-prometheus
[go-grpc-prometheus]: https://github.com/grpc-ecosystem/go-grpc-prometheus

View File

@@ -1,3 +0,0 @@
---
title: Operations guide
---

View File

@@ -1,6 +1,4 @@
---
title: Role-based access control
---
# Role-based access control
## Overview
@@ -124,12 +122,12 @@ $ etcdctl role remove myrolename
## Enabling authentication
The minimal steps to enabling auth are as follows. The administrator can set up users and roles before or after enabling authentication, as a matter of preference.
The minimal steps to enabling auth are as follows. The administrator can set up users and roles before or after enabling authentication, as a matter of preference.
Make sure the root user is created:
```
$ etcdctl user add root
$ etcdctl user add root
Password of root:
```
@@ -169,10 +167,7 @@ $ etcdctl --user user --password password get foo
Otherwise, all `etcdctl` commands remain the same. Users and roles can still be created and modified, but require authentication by a user with the root role.
## Using TLS Common Name
As of version v3.2 if an etcd server is launched with the option `--client-cert-auth=true`, the field of Common Name (CN) in the client's TLS cert will be used as an etcd user. In this case, the common name authenticates the user and the client does not need a password. Note that if both of 1. `--client-cert-auth=true` is passed and CN is provided by the client, and 2. username and password are provided by the client, the username and password based authentication is prioritized. Note that this feature cannot be used with gRPC-proxy and gRPC-gateway. This is because gRPC-proxy terminates TLS from its client so all the clients share a cert of the proxy. gRPC-gateway uses a TLS connection internally for transforming HTTP request to gRPC request so it shares the same limitation. Therefore the clients cannot provide their CN to the server correctly. gRPC-proxy will cause an error and stop if a given cert has non empty CN. gRPC-proxy returns an error which indicates that the client has an non empty CN in its cert.
As of version v3.2 if an etcd server is launched with the option `--client-cert-auth=true`, the field of Common Name (CN) in the client's TLS cert will be used as an etcd user. In this case, the common name authenticates the user and the client does not need a password. Note that if both of 1. `--client-cert-auth=true` is passed and CN is provided by the client, and 2. username and password are provided by the client, the username and password based authentication is prioritized.
As of version v3.3 if an etcd server is launched with the option `--peer-cert-allowed-cn` filtering of CN inter-peer connections is enabled. Nodes can only join the etcd cluster if their CN match the allowed one.
See [etcd security page](https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/security.md) for more details.
## Notes on password strength
`etcdctl` command line interface and etcd API don't check a strength (length, coexistence of numbers and alphabets, etc) of the password during creating a new user or updating password of an existing user. An administrator needs to care about a requirement of password strength by themselves.
See [etcd security page](https://github.com/coreos/etcd/blob/master/Documentation/op-guide/security.md) for more details.

View File

@@ -1,6 +1,4 @@
---
title: Clustering Guide
---
# Clustering Guide
## Overview

View File

@@ -1,6 +1,4 @@
---
title: Configuration flags
---
# Configuration flags
etcd is configurable through a configuration file, various command-line flags, and environment variables.
@@ -49,14 +47,14 @@ To start etcd automatically using custom settings at startup in Linux, using a [
+ env variable: ETCD_ELECTION_TIMEOUT
### --listen-peer-urls
+ List of URLs to listen on for peer traffic. This flag tells the etcd to accept incoming requests from its peers on the specified scheme://IP:port combinations. Scheme can be http or https. Alternatively, use `unix://<file-path>` or `unixs://<file-path>` for unix sockets. If 0.0.0.0 is specified as the IP, etcd listens to the given port on all interfaces. If an IP address is given as well as a port, etcd will listen on the given port and interface. Multiple URLs may be used to specify a number of addresses and ports to listen on. The etcd will respond to requests from any of the listed addresses and ports.
+ List of URLs to listen on for peer traffic. This flag tells the etcd to accept incoming requests from its peers on the specified scheme://IP:port combinations. Scheme can be either http or https.If 0.0.0.0 is specified as the IP, etcd listens to the given port on all interfaces. If an IP address is given as well as a port, etcd will listen on the given port and interface. Multiple URLs may be used to specify a number of addresses and ports to listen on. The etcd will respond to requests from any of the listed addresses and ports.
+ default: "http://localhost:2380"
+ env variable: ETCD_LISTEN_PEER_URLS
+ example: "http://10.0.0.1:2380"
+ invalid example: "http://example.com:2380" (domain name is invalid for binding)
### --listen-client-urls
+ List of URLs to listen on for client traffic. This flag tells the etcd to accept incoming requests from the clients on the specified scheme://IP:port combinations. Scheme can be either http or https. Alternatively, use `unix://<file-path>` or `unixs://<file-path>` for unix sockets. If 0.0.0.0 is specified as the IP, etcd listens to the given port on all interfaces. If an IP address is given as well as a port, etcd will listen on the given port and interface. Multiple URLs may be used to specify a number of addresses and ports to listen on. The etcd will respond to requests from any of the listed addresses and ports.
+ List of URLs to listen on for client traffic. This flag tells the etcd to accept incoming requests from the clients on the specified scheme://IP:port combinations. Scheme can be either http or https. If 0.0.0.0 is specified as the IP, etcd listens to the given port on all interfaces. If an IP address is given as well as a port, etcd will listen on the given port and interface. Multiple URLs may be used to specify a number of addresses and ports to listen on. The etcd will respond to requests from any of the listed addresses and ports.
+ default: "http://localhost:2379"
+ env variable: ETCD_LISTEN_CLIENT_URLS
+ example: "http://10.0.0.1:2379"
@@ -84,16 +82,6 @@ To start etcd automatically using custom settings at startup in Linux, using a [
+ default: 0
+ env variable: ETCD_QUOTA_BACKEND_BYTES
### --backend-batch-limit
+ BackendBatchLimit is the maximum operations before commit the backend transaction.
+ default: 0
+ env variable: ETCD_BACKEND_BATCH_LIMIT
### --backend-batch-interval
+ BackendBatchInterval is the maximum time before commit the backend transaction.
+ default: 0
+ env variable: ETCD_BACKEND_BATCH_INTERVAL
### --max-txn-ops
+ Maximum number of operations permitted in a transaction.
+ default: 128
@@ -184,7 +172,7 @@ To start etcd automatically using custom settings at startup in Linux, using a [
### --strict-reconfig-check
+ Reject reconfiguration requests that would cause quorum loss.
+ default: true
+ default: false
+ env variable: ETCD_STRICT_RECONFIG_CHECK
### --auto-compaction-retention
@@ -263,7 +251,6 @@ The security flags help to [build a secure etcd cluster][security].
+ Enable client cert authentication.
+ default: false
+ env variable: ETCD_CLIENT_CERT_AUTH
+ CN authentication is not supported by gRPC-gateway.
### --client-crl-file
+ Path to the client certificate revocation list file.
@@ -323,22 +310,9 @@ The security flags help to [build a secure etcd cluster][security].
+ default: none
+ env variable: ETCD_PEER_CERT_ALLOWED_CN
### --cipher-suites
+ Comma-separated list of supported TLS cipher suites between server/client and peers.
+ default: ""
+ env variable: ETCD_CIPHER_SUITES
### --experimental-peer-skip-client-san-verification
+ Skip verification of SAN field in client certificate for peer connections.
+ default: false
+ env variable: ETCD_EXPERIMENTAL_PEER_SKIP_CLIENT_SAN_VERIFICATION
## Logging flags
### --logger
**Available from v3.4**
+ Specify 'zap' for structured logging or 'capnslog'.
+ default: capnslog
+ env variable: ETCD_LOGGER
@@ -346,8 +320,7 @@ The security flags help to [build a secure etcd cluster][security].
### --log-outputs
+ Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd, or list of comma separated output targets.
+ default: default
+ env variable: ETCD_LOG_OUTPUTS
+ 'default' use 'stderr' config for v3.4 during zap logger migraion
+ env variable: ETCD_LOG_OUTPUT
### --debug
+ Drop the default log level to DEBUG for all subpackages.
@@ -366,7 +339,7 @@ For example, it may panic if other members in the cluster are still alive.
Follow the instructions when using these flags.
### --force-new-cluster
+ Force to create a new one-member cluster. It commits configuration changes forcing to remove all existing members in the cluster and add itself, but is strongly discouraged. Please review the [disaster recovery][recovery] documentation for preferred v3 recovery procedures.
+ Force to create a new one-member cluster. It commits configuration changes forcing to remove all existing members in the cluster and add itself. It needs to be set to [restore a backup][restore].
+ default: false
+ env variable: ETCD_FORCE_NEW_CLUSTER
@@ -380,24 +353,20 @@ Follow the instructions when using these flags.
+ Load server configuration from a file.
+ default: ""
+ example: [sample configuration file][sample-config-file]
+ env variable: ETCD_CONFIG_FILE
## Profiling flags
### --enable-pprof
+ Enable runtime profiling data via HTTP server. Address is at client URL + "/debug/pprof/"
+ default: false
+ env variable: ETCD_ENABLE_PPROF
### --metrics
+ Set level of detail for exported metrics, specify 'extensive' to include histogram metrics.
+ default: basic
+ env variable: ETCD_METRICS
### --listen-metrics-urls
+ List of additional URLs to listen on that will respond to both the `/metrics` and `/health` endpoints
+ default: ""
+ env variable: ETCD_LISTEN_METRICS_URLS
## Auth flags
@@ -406,24 +375,16 @@ Follow the instructions when using these flags.
+ For asymmetric algorithms ('RS', 'PS', 'ES'), the public key is optional, as the private key contains enough information to both sign and verify tokens.
+ Example option of JWT: '--auth-token jwt,pub-key=app.rsa.pub,priv-key=app.rsa,sign-method=RS512,ttl=10m'
+ default: "simple"
+ env variable: ETCD_AUTH_TOKEN
### --bcrypt-cost
+ Specify the cost / strength of the bcrypt algorithm for hashing auth passwords. Valid values are between 4 and 31.
+ default: 10
+ env variable: (not supported)
## Experimental flags
### --experimental-backend-bbolt-freelist-type
+ The freelist type that etcd backend(bboltdb) uses (array and map are supported types).
+ default: array
+ env variable: ETCD_EXPERIMENTAL_BACKEND_BBOLT_FREELIST_TYPE
### --experimental-corrupt-check-time
+ Duration of time between cluster corruption check passes
+ default: 0s
+ env variable: ETCD_EXPERIMENTAL_CORRUPT_CHECK_TIME
[build-cluster]: clustering.md#static
[reconfig]: runtime-configuration.md
@@ -435,4 +396,3 @@ Follow the instructions when using these flags.
[systemd-intro]: http://freedesktop.org/wiki/Software/systemd/
[tuning]: ../tuning.md#time-parameters
[sample-config-file]: ../../etcd.conf.yml.sample
[recovery]: recovery.md#disaster-recovery

View File

@@ -1,6 +1,4 @@
---
title: Run etcd clusters inside containers
---
# Run etcd clusters inside containers
The following guide shows how to run etcd with rkt and Docker using the [static bootstrap process](clustering.md#static).

View File

@@ -1,134 +1,113 @@
# these rules synced manually from https://github.com/etcd-io/etcd/blob/master/Documentation/etcd-mixin/mixin.libsonnet
groups:
- name: etcd
- name: etcd3_alert.rules
rules:
- alert: etcdInsufficientMembers
annotations:
message: 'etcd cluster "{{ $labels.job }}": insufficient members ({{ $value
}}).'
expr: |
sum(up{job=~".*etcd.*"} == bool 1) by (job) < ((count(up{job=~".*etcd.*"}) by (job) + 1) / 2)
- alert: InsufficientMembers
expr: count(up{job="etcd"} == 0) > (count(up{job="etcd"}) / 2 - 1)
for: 3m
labels:
severity: critical
- alert: etcdNoLeader
annotations:
message: 'etcd cluster "{{ $labels.job }}": member {{ $labels.instance }} has
no leader.'
expr: |
etcd_server_has_leader{job=~".*etcd.*"} == 0
description: If one more etcd member goes down the cluster will be unavailable
summary: etcd cluster insufficient members
- alert: NoLeader
expr: etcd_server_has_leader{job="etcd"} == 0
for: 1m
labels:
severity: critical
- alert: etcdHighNumberOfLeaderChanges
annotations:
message: 'etcd cluster "{{ $labels.job }}": instance {{ $labels.instance }}
has seen {{ $value }} leader changes within the last hour.'
expr: |
rate(etcd_server_leader_changes_seen_total{job=~".*etcd.*"}[15m]) > 3
for: 15m
description: etcd member {{ $labels.instance }} has no leader
summary: etcd member has no leader
- alert: HighNumberOfLeaderChanges
expr: increase(etcd_server_leader_changes_seen_total{job="etcd"}[1h]) > 3
labels:
severity: warning
- alert: etcdHighNumberOfFailedGRPCRequests
annotations:
message: 'etcd cluster "{{ $labels.job }}": {{ $value }}% of requests for {{
$labels.grpc_method }} failed on etcd instance {{ $labels.instance }}.'
expr: |
100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method)
/
sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method)
> 1
description: etcd instance {{ $labels.instance }} has seen {{ $value }} leader
changes within the last hour
summary: a high number of leader changes within the etcd cluster are happening
- alert: HighNumberOfFailedGRPCRequests
expr: 100 * (sum(rate(grpc_server_handled_total{grpc_code!="OK",job="etcd"}[5m])) BY (grpc_service, grpc_method)
/ sum(rate(grpc_server_handled_total{job="etcd"}[5m])) BY (grpc_service, grpc_method)) > 1
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedGRPCRequests
annotations:
message: 'etcd cluster "{{ $labels.job }}": {{ $value }}% of requests for {{
$labels.grpc_method }} failed on etcd instance {{ $labels.instance }}.'
expr: |
100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method)
/
sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method)
> 5
description: '{{ $value }}% of requests for {{ $labels.grpc_method }} failed
on etcd instance {{ $labels.instance }}'
summary: a high number of gRPC requests are failing
- alert: HighNumberOfFailedGRPCRequests
expr: 100 * (sum(rate(grpc_server_handled_total{grpc_code!="OK",job="etcd"}[5m])) BY (grpc_service, grpc_method)
/ sum(rate(grpc_server_handled_total{job="etcd"}[5m])) BY (grpc_service, grpc_method)) > 5
for: 5m
labels:
severity: critical
- alert: etcdGRPCRequestsSlow
annotations:
message: 'etcd cluster "{{ $labels.job }}": gRPC requests to {{ $labels.grpc_method
}} are taking {{ $value }}s on etcd instance {{ $labels.instance }}.'
expr: |
histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~".*etcd.*", grpc_type="unary"}[5m])) by (job, instance, grpc_service, grpc_method, le))
description: '{{ $value }}% of requests for {{ $labels.grpc_method }} failed
on etcd instance {{ $labels.instance }}'
summary: a high number of gRPC requests are failing
- alert: GRPCRequestsSlow
expr: histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job="etcd",grpc_type="unary"}[5m])) by (grpc_service, grpc_method, le))
> 0.15
for: 10m
labels:
severity: critical
- alert: etcdMemberCommunicationSlow
annotations:
message: 'etcd cluster "{{ $labels.job }}": member communication with {{ $labels.To
}} is taking {{ $value }}s on etcd instance {{ $labels.instance }}.'
expr: |
histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~".*etcd.*"}[5m]))
description: on etcd instance {{ $labels.instance }} gRPC requests to {{ $labels.grpc_method
}} are slow
summary: slow gRPC requests
- record: instance:fd_utilization
expr: process_open_fds / process_max_fds
- alert: FdExhaustionClose
expr: predict_linear(instance:fd_utilization[1h], 3600 * 4) > 1
for: 10m
labels:
severity: warning
annotations:
description: '{{ $labels.job }} instance {{ $labels.instance }} will exhaust
its file descriptors soon'
summary: file descriptors soon exhausted
- alert: FdExhaustionClose
expr: predict_linear(instance:fd_utilization[10m], 3600) > 1
for: 10m
labels:
severity: critical
annotations:
description: '{{ $labels.job }} instance {{ $labels.instance }} will exhaust
its file descriptors soon'
summary: file descriptors soon exhausted
- alert: EtcdMemberCommunicationSlow
expr: histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket[5m]))
> 0.15
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedProposals
annotations:
message: 'etcd cluster "{{ $labels.job }}": {{ $value }} proposal failures within
the last hour on etcd instance {{ $labels.instance }}.'
expr: |
rate(etcd_server_proposals_failed_total{job=~".*etcd.*"}[15m]) > 5
for: 15m
description: etcd instance {{ $labels.instance }} member communication with
{{ $labels.To }} is slow
summary: etcd member communication is slow
- alert: HighNumberOfFailedProposals
expr: increase(etcd_server_proposals_failed_total{job="etcd"}[1h]) > 5
labels:
severity: warning
- alert: etcdHighFsyncDurations
annotations:
message: 'etcd cluster "{{ $labels.job }}": 99th percentile fync durations are
{{ $value }}s on etcd instance {{ $labels.instance }}.'
expr: |
histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~".*etcd.*"}[5m]))
description: etcd instance {{ $labels.instance }} has seen {{ $value }} proposal
failures within the last hour
summary: a high number of proposals within the etcd cluster are failing
- alert: HighFsyncDurations
expr: histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket[5m]))
> 0.5
for: 10m
labels:
severity: warning
- alert: etcdHighCommitDurations
annotations:
message: 'etcd cluster "{{ $labels.job }}": 99th percentile commit durations
{{ $value }}s on etcd instance {{ $labels.instance }}.'
expr: |
histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket{job=~".*etcd.*"}[5m]))
description: etcd instance {{ $labels.instance }} fync durations are high
summary: high fsync durations
- alert: HighCommitDurations
expr: histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket[5m]))
> 0.25
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedHTTPRequests
annotations:
message: '{{ $value }}% of requests for {{ $labels.method }} failed on etcd
instance {{ $labels.instance }}'
expr: |
sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m]))
BY (method) > 0.01
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedHTTPRequests
annotations:
message: '{{ $value }}% of requests for {{ $labels.method }} failed on etcd
instance {{ $labels.instance }}.'
expr: |
sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m]))
BY (method) > 0.05
for: 10m
labels:
severity: critical
- alert: etcdHTTPRequestsSlow
annotations:
message: etcd instance {{ $labels.instance }} HTTP requests to {{ $labels.method
}} are slow.
expr: |
histogram_quantile(0.99, rate(etcd_http_successful_duration_seconds_bucket[5m]))
> 0.15
for: 10m
labels:
severity: warning
description: etcd instance {{ $labels.instance }} commit durations are high
summary: high commit durations

View File

@@ -1,6 +1,4 @@
---
title: Failure modes
---
# Failure modes
Failures are common in a large deployment of machines. A machine fails when its hardware or software malfunctions. Multiple machines fail together when there are power failures or network issues. Multiple kinds of failures can also happen at once; it is almost impossible to enumerate all possible failure cases.

View File

@@ -1,12 +1,10 @@
---
title: etcd gateway
---
# etcd gateway
## What is etcd gateway
etcd gateway is a simple TCP proxy that forwards network data to the etcd cluster. The gateway is stateless and transparent; it neither inspects client requests nor interferes with cluster responses. It does not terminate TLS connections, do TLS handshakes on behalf of its clients, or verify if the connection is secured.
etcd gateway is a simple TCP proxy that forwards network data to the etcd cluster. The gateway is stateless and transparent; it neither inspects client requests nor interferes with cluster responses.
The gateway supports multiple etcd server endpoints and works on a simple round-robin policy. It only routes to available endpoints and hides failures from its clients. Other retry policies, such as weighted round-robin, may be supported in the future.
The gateway supports multiple etcd server endpoints and works on a simple round-robin policy. It only routes to available enpoints and hides failures from its clients. Other retry policies, such as weighted round-robin, may be supported in the future.
## When to use etcd gateway
@@ -62,7 +60,7 @@ infra2.example.com. 300 IN A 10.0.1.12
Start the etcd gateway to fetch the endpoints from the DNS SRV entries with the command:
```bash
$ etcd gateway start --discovery-srv=example.com
$ etcd gateway --discovery-srv=example.com
2016-08-16 11:21:18.867350 I | tcpproxy: ready to proxy client requests to [...]
```
@@ -74,7 +72,7 @@ $ etcd gateway start --discovery-srv=example.com
* Comma-separated list of etcd server targets for forwarding client connections.
* Default: `127.0.0.1:2379`
* Invalid example: `https://127.0.0.1:2379` (gateway does not terminate TLS). Note that the gateway does not verify the HTTP schema or inspect the requests, it only forwards requests to the given endpoints.
* Invalid example: `https://127.0.0.1:2379` (gateway does not terminate TLS)
#### --discovery-srv
@@ -103,5 +101,5 @@ $ etcd gateway start --discovery-srv=example.com
#### --trusted-ca-file
* Path to the client TLS CA file for the etcd cluster to verify the endpoints returned from SRV discovery. Note that it is ONLY used for authenticating the discovered endpoints rather than creating connections for data transferring. The gateway never terminates TLS connections or create TLS connections on behalf of its clients.
* Path to the client TLS CA file for the etcd cluster. Used to authenticate endpoints.
* Default: (not set)

View File

@@ -1,6 +1,4 @@
---
title: gRPC proxy
---
# gRPC proxy
The gRPC proxy is a stateless etcd reverse proxy operating at the gRPC layer (L7). The proxy is designed to reduce the total processing load on the core etcd cluster. For horizontal scalability, it coalesces watch and lease API requests. To protect the cluster against abusive clients, it caches key range requests.
@@ -196,7 +194,7 @@ $ ETCDCTL_API=3 etcdctl --endpoints=localhost:2379 get my-prefix/my-key
## TLS termination
Terminate TLS from a secure etcd cluster with the gRPC proxy by serving an unencrypted local endpoint.
Terminate TLS from a secure etcd cluster with the grpc proxy by serving an unencrypted local endpoint.
To try it out, start a single member etcd cluster with client https:
@@ -213,7 +211,7 @@ $ ETCDCTL_API=3 etcdctl --endpoints=http://localhost:2379 endpoint status
$ ETCDCTL_API=3 etcdctl --endpoints=https://localhost:2379 --cert=client.crt --key=client.key --cacert=ca.crt endpoint status
```
Next, start a gRPC proxy on `localhost:12379` by connecting to the etcd endpoint `https://localhost:2379` using the client certificates:
Next, start a grpc proxy on `localhost:12379` by connecting to the etcd endpoint `https://localhost:2379` using the client certificates:
```sh
$ etcd grpc-proxy start --endpoints=https://localhost:2379 --listen-addr localhost:12379 --cert client.crt --key client.key --cacert=ca.crt --insecure-skip-tls-verify &
@@ -225,28 +223,3 @@ Finally, test the TLS termination by putting a key into the proxy over http:
$ ETCDCTL_API=3 etcdctl --endpoints=http://localhost:12379 put abc def
# OK
```
## Metrics and Health
The gRPC proxy exposes `/health` and Prometheus `/metrics` endpoints for the etcd members defined by `--endpoints`. An alternative define an additional URL that will respond to both the `/metrics` and `/health` endpoints with the `--metrics-addr` flag.
```bash
$ etcd grpc-proxy start \
--endpoints https://localhost:2379 \
--metrics-addr https://0.0.0.0:4443 \
--listen-addr 127.0.0.1:23790 \
--key client.key \
--key-file proxy-server.key \
--cert client.crt \
--cert-file proxy-server.crt \
--cacert ca.pem \
--trusted-ca-file proxy-ca.pem
```
### Known issue
The main interface of the proxy serves both HTTP2 and HTTP/1.1. If proxy is setup with TLS as show in the above example, when using a client such as cURL against the listening interface will require explicitly setting the protocol to HTTP/1.1 on the request to return `/metrics` or `/health`. By using the `--metrics-addr` flag the secondary interface will not have this requirement.
```bash
$ curl --cacert proxy-ca.pem --key proxy-client.key --cert proxy-client.crt https://127.0.0.1:23790/metrics --http1.1
```

View File

@@ -1,6 +1,4 @@
---
title: Hardware recommendations
---
# Hardware recommendations
etcd usually runs well with limited resources for development or testing purposes; its common to develop with etcd on a laptop or a cheap cloud machine. However, when running etcd clusters in production, some hardware guidelines are useful for proper administration. These suggestions are not hard rules; they serve as a good starting point for a robust production deployment. As always, deployments should be tested with simulated workloads before running in production.

View File

@@ -1,6 +1,4 @@
---
title: Maintenance
---
# Maintenance
## Overview
@@ -14,7 +12,7 @@ All etcd maintenance manages storage resources consumed by the etcd keyspace. Fa
Higher `--snapshot-count` holds more Raft entries in memory until snapshot, thus causing [recurrent higher memory usage](https://github.com/kubernetes/kubernetes/issues/60589#issuecomment-371977156). Since leader retains latest Raft entries for longer, a slow follower has more time to catch up before leader snapshot. `--snapshot-count` is a tradeoff between higher memory usage and better availabilities of slow followers.
Since v3.2, the default value of `--snapshot-count` has [changed from from 10,000 to 100,000](https://github.com/etcd-io/etcd/pull/7160).
Since v3.2, the default value of `--snapshot-count` has [changed from from 10,000 to 100,000](https://github.com/coreos/etcd/pull/7160).
In performance-wise, `--snapshot-count` greater than 100,000 may impact the write throughput. Higher number of in-memory objects can slow down [Go GC mark phase `runtime.scanobject`](https://golang.org/src/runtime/mgc.go), and infrequent memory reclamation makes allocation slow. Performance varies depending on the workloads and system environments. However, in general, too frequent compaction affects cluster availabilities and write throughputs. Too infrequent compaction is also harmful placing too much pressure on Go garbage collector. See https://www.slideshare.net/mitakeh/understanding-performance-aspects-of-etcd-and-raft for more research results.
@@ -47,11 +45,11 @@ Error: rpc error: code = 11 desc = etcdserver: mvcc: required revision has been
$ etcd --auto-compaction-retention=1
```
[v3.0.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.0.md) and [v3.1.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.1.md) with `--auto-compaction-retention=10` run periodic compaction on v3 key-value store for every 10-hour. Compactor only supports periodic compaction. Compactor records latest revisions every 5-minute, until it reaches the first compaction period (e.g. 10-hour). In order to retain key-value history of last compaction period, it uses the last revision that was fetched before compaction period, from the revision records that were collected every 5-minute. When `--auto-compaction-retention=10`, compactor uses revision 100 for compact revision where revision 100 is the latest revision fetched from 10 hours ago. If compaction succeeds or requested revision has already been compacted, it resets period timer and starts over with new historical revision records (e.g. restart revision collect and compact for the next 10-hour period). If compaction fails, it retries in 5 minutes.
[v3.0.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.0.md) and [v3.1.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.1.md) with `--auto-compaction-retention=10` run periodic compaction on v3 key-value store for every 10-hour. Compactor only supports periodic compaction. Compactor records latest revisions every 5-minute, until it reaches the first compaction period (e.g. 10-hour). In order to retain key-value history of last compaction period, it uses the last revision that was fetched before compaction period, from the revision records that were collected every 5-minute. When `--auto-compaction-retention=10`, compactor uses revision 100 for compact revision where revision 100 is the latest revision fetched from 10 hours ago. If compaction succeeds or requested revision has already been compacted, it resets period timer and starts over with new historical revision records (e.g. restart revision collect and compact for the next 10-hour period). If compaction fails, it retries in 5 minutes.
[v3.2.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md) compactor runs [every hour](https://github.com/etcd-io/etcd/pull/7875). Compactor only supports periodic compaction. Compactor continues to record latest revisions every 5-minute. For every hour, it uses the last revision that was fetched before compaction period, from the revision records that were collected every 5-minute. That is, for every hour, compactor discards historical data created before compaction period. The retention window of compaction period moves to next hour. For instance, when hourly writes are 100 and `--auto-compaction-retention=10`, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2.x, v3.3.0, v3.3.1, and v3.3.2 compact revision 1000, 1100, and 1200 for every 1-hour. If compaction succeeds or requested revision has already been compacted, it resets period timer and removes used compacted revision from historical revision records (e.g. start next revision collect and compaction from previously collected revisions). If compaction fails, it retries in 5 minutes.
[v3.2.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md) compactor runs [every hour](https://github.com/coreos/etcd/pull/7875). Compactor only supports periodic compaction. Compactor continues to record latest revisions every 5-minute. For every hour, it uses the last revision that was fetched before compaction period, from the revision records that were collected every 5-minute. That is, for every hour, compactor discards historical data created before compaction period. The retention window of compaction period moves to next hour. For instance, when hourly writes are 100 and `--auto-compaction-retention=10`, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2.x, v3.3.0, v3.3.1, and v3.3.2 compact revision 1000, 1100, and 1200 for every 1-hour. If compaction succeeds or requested revision has already been compacted, it resets period timer and removes used compacted revision from historical revision records (e.g. start next revision collect and compaction from previously collected revisions). If compaction fails, it retries in 5 minutes.
In [v3.3.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md), [v3.3.1](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md), and [v3.3.2](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md), `--auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000). For instance, `--auto-compaction-mode=periodic --auto-compaction-retention=72h` automatically `Compact` with 72-hour retention windown, for every 7.2-hour. For instance, `--auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown, for every 3-minute. Periodic compactor continues to record latest revisions for every 1/10 of given compaction period (e.g. 1-hour when `--auto-compaction-mode=periodic --auto-compaction-retention=10h`). For every 1/10 of given compaction period, compactor uses the last revision that was fetched before compaction period, to discard historical data. The retention window of compaction period moves for every 1/10 of given compaction period. For instance, when hourly writes are 100 and `--auto-compaction-retention=10`, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2.x, v3.3.0, v3.3.1, and v3.3.2 compact revision 1000, 1100, and 1200 for every 1-hour. Futhermore, when writes per minute are 1000, v3.3.0, v3.3.1, and v3.3.2 with `--auto-compaction-mode=periodic --auto-compaction-retention=30m` compact revision 30000, 33000, and 36000, for every 3-minute with more finer granularity.
In [v3.3.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md), [v3.3.1](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md), and [v3.3.2](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md), `--auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000). For instance, `--auto-compaction-mode=periodic --auto-compaction-retention=72h` automatically `Compact` with 72-hour retention windown, for every 7.2-hour. For instance, `--auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown, for every 3-minute. Periodic compactor continues to record latest revisions for every 1/10 of given compaction period (e.g. 1-hour when `--auto-compaction-mode=periodic --auto-compaction-retention=10h`). For every 1/10 of given compaction period, compactor uses the last revision that was fetched before compaction period, to discard historical data. The retention window of compaction period moves for every 1/10 of given compaction period. For instance, when hourly writes are 100 and `--auto-compaction-retention=10`, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2.x, v3.3.0, v3.3.1, and v3.3.2 compact revision 1000, 1100, and 1200 for every 1-hour. Futhermore, when writes per minute are 1000, v3.3.0, v3.3.1, and v3.3.2 with `--auto-compaction-mode=periodic --auto-compaction-retention=30m` compact revision 30000, 33000, and 36000, for every 3-minute with more finer granularity.
When `--auto-compaction-retention=10h`, etcd first waits 10-hour for the first compaction, and then does compaction every hour (1/10 of 10-hour) afterwards like this:
@@ -68,7 +66,7 @@ When `--auto-compaction-retention=10h`, etcd first waits 10-hour for the first c
Whether compaction succeeds or not, this process repeats for every 1/10 of given compaction period. If compaction succeeds, it just removes compacted revision from historical revision records.
In [v3.3.3](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md), `--auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000). Previously, `--auto-compaction-mode=periodic --auto-compaction-retention=72h` automatically `Compact` with 72-hour retention windown for every 7.2-hour. **Now, `Compact` happens, for every 1-hour but still with 72-hour retention window.** Previously, `--auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown for every 3-minute. **Now, `Compact` happens, for every 30-minute but still with 30-minute retention window.** Periodic compactor keeps recording latest revisions for every compaction period when given period is less than 1-hour, or for every 1-hour when given compaction period is greater than 1-hour (e.g. 1-hour when `--auto-compaction-mode=periodic --auto-compaction-retention=24h`). For every compaction period or 1-hour, compactor uses the last revision that was fetched before compaction period, to discard historical data. The retention window of compaction period moves for every given compaction period or hour. For instance, when hourly writes are 100 and `--auto-compaction-mode=periodic --auto-compaction-retention=24h`, `v3.2.x`, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 2400, 2640, and 2880 for every 2.4-hour, while `v3.3.3` *or later* compacts revision 2400, 2500, 2600 for every 1-hour. Furthermore, when `--auto-compaction-mode=periodic --auto-compaction-retention=30m` and writes per minute are about 1000, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 30000, 33000, and 36000, for every 3-minute, while `v3.3.3` *or later* compacts revision 30000, 60000, and 90000, for every 30-minute.
In [v3.3.3](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md), `--auto-compaction-mode=revision --auto-compaction-retention=1000` automatically `Compact` on `"latest revision" - 1000` every 5-minute (when latest revision is 30000, compact on revision 29000). Previously, `--auto-compaction-mode=periodic --auto-compaction-retention=72h` automatically `Compact` with 72-hour retention windown for every 7.2-hour. **Now, `Compact` happens, for every 1-hour but still with 72-hour retention window.** Previously, `--auto-compaction-mode=periodic --auto-compaction-retention=30m` automatically `Compact` with 30-minute retention windown for every 3-minute. **Now, `Compact` happens, for every 30-minute but still with 30-minute retention window.** Periodic compactor keeps recording latest revisions for every compaction period when given period is less than 1-hour, or for every 1-hour when given compaction period is greater than 1-hour (e.g. 1-hour when `--auto-compaction-mode=periodic --auto-compaction-retention=24h`). For every compaction period or 1-hour, compactor uses the last revision that was fetched before compaction period, to discard historical data. The retention window of compaction period moves for every given compaction period or hour. For instance, when hourly writes are 100 and `--auto-compaction-mode=periodic --auto-compaction-retention=24h`, `v3.2.x`, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 2400, 2640, and 2880 for every 2.4-hour, while `v3.3.3` *or later* compacts revision 2400, 2500, 2600 for every 1-hour. Futhermore, when `--auto-compaction-mode=periodic --auto-compaction-retention=30m` and writes per minute are about 1000, `v3.3.0`, `v3.3.1`, and `v3.3.2` compact revision 30000, 33000, and 36000, for every 3-minute, while `v3.3.3` *or later* compacts revision 30000, 60000, and 90000, for every 30-minute.
## Defragmentation

View File

@@ -1,6 +1,4 @@
---
title: Monitoring etcd
---
# Monitoring etcd
Each etcd server provides local monitoring information on its client port through http endpoints. The monitoring data is useful for both system health checking and cluster debugging.
@@ -123,6 +121,8 @@ Access: proxy
Then import the default [etcd dashboard template][template] and customize. For instance, if Prometheus data source name is `my-etcd`, the `datasource` field values in JSON also need to be `my-etcd`.
See the [demo][demo].
Sample dashboard:
![](./etcd-sample-grafana.png)
@@ -131,3 +131,4 @@ Sample dashboard:
[prometheus]: https://prometheus.io/
[grafana]: http://grafana.org/
[template]: ./grafana.json
[demo]: http://dash.etcd.io/dashboard/db/test-etcd-kubernetes

View File

@@ -1,6 +1,4 @@
---
title: Performance
---
# Performance
## Understanding performance

View File

@@ -1,6 +1,4 @@
---
title: Disaster recovery
---
# Disaster recovery
etcd is designed to withstand machine failures. An etcd cluster automatically recovers from temporary failures (e.g., machine reboots) and tolerates up to *(N-1)/2* permanent failures for a cluster of N members. When a member permanently fails, whether due to hardware failure or disk corruption, it loses access to the cluster. If the cluster permanently loses more than *(N-1)/2* members then it disastrously fails, irrevocably losing quorum. Once quorum is lost, the cluster cannot reach consensus and therefore cannot continue accepting updates.
@@ -66,6 +64,6 @@ Now the restored etcd cluster should be available and serving the keyspace given
## Restoring a cluster from membership mis-reconfiguration with wrong URLs
Previously, etcd panics on [membership mis-reconfiguration with wrong URLs](https://github.com/etcd-io/etcd/issues/9173) (v3.2.15 or later returns [error early in client-side](https://github.com/etcd-io/etcd/pull/9174) before etcd server panic).
Previously, etcd panics on [membership mis-reconfiguration with wrong URLs](https://github.com/coreos/etcd/issues/9173) (v3.2.15 or later returns [error early in client-side](https://github.com/coreos/etcd/pull/9174) before etcd server panic).
Recommended way is restore from [snapshot](#snapshotting-the-keyspace). `--force-new-cluster` can be used to overwrite cluster membership while keeping existing application data, but is strongly discouraged because it will panic if other members from previous cluster are still alive. Make sure to save snapshot periodically.

View File

@@ -1,6 +1,4 @@
---
title: Runtime reconfiguration
---
# Runtime reconfiguration
etcd comes with support for incremental runtime reconfiguration, which allows users to update the membership of the cluster at run time.
@@ -102,7 +100,7 @@ Adding a member is a two step process:
`etcdctl` adds a new member to the cluster by specifying the member's [name][conf-name] and [advertised peer URLs][conf-adv-peer]:
```sh
$ etcdctl member add infra3 --peer-urls=http://10.0.1.13:2380
$ etcdctl member add infra3 http://10.0.1.13:2380
added member 9bf1b35fc7761a23 to cluster
ETCD_NAME="infra3"

View File

@@ -1,6 +1,4 @@
---
title: Design of runtime reconfiguration
---
# Design of runtime reconfiguration
Runtime reconfiguration is one of the hardest and most error prone features in a distributed system, especially in a consensus based system like etcd.

View File

@@ -1,8 +1,6 @@
---
title: Transport security model
---
# Transport security model
etcd supports automatic TLS as well as authentication through client certificates for both clients to server as well as peer (server to server / cluster) communication. **Note that etcd doesn't enable [RBAC based authentication][auth] or the authentication feature in the transport layer by default to reduce friction for users getting started with the database. Further, changing this default would be a breaking change for the project which was established since 2013. An etcd cluster which doesn't enable security features can expose its data to any clients.**
etcd supports automatic TLS as well as authentication through client certificates for both clients to server as well as peer (server to server / cluster) communication.
To get up and running, first have a CA certificate and a signed key pair for one member. It is recommended to create and sign a new key pair for every member in a cluster.
@@ -126,7 +124,7 @@ And also the response from the server:
}
```
Specify cipher suites to block [weak TLS cipher suites](https://github.com/etcd-io/etcd/issues/8320).
Specify cipher suites to block [weak TLS cipher suites](https://github.com/coreos/etcd/issues/8320).
TLS handshake would fail when client hello is requested with invalid cipher suites.
@@ -242,9 +240,9 @@ When client authentication is enabled for an etcd member, the administrator must
## Notes for TLS authentication
Since [v3.2.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v320-2017-06-09), [TLS certificates get reloaded on every client connection](https://github.com/etcd-io/etcd/pull/7829). This is useful when replacing expiry certs without stopping etcd servers; it can be done by overwriting old certs with new ones. Refreshing certs for every connection should not have too much overhead, but can be improved in the future, with caching layer. Example tests can be found [here](https://github.com/coreos/etcd/blob/b041ce5d514a4b4aaeefbffb008f0c7570a18986/integration/v3_grpc_test.go#L1601-L1757).
Since [v3.2.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md#v320-2017-06-09), [TLS certificates get reloaded on every client connection](https://github.com/coreos/etcd/pull/7829). This is useful when replacing expiry certs without stopping etcd servers; it can be done by overwriting old certs with new ones. Refreshing certs for every connection should not have too much overhead, but can be improved in the future, with caching layer. Example tests can be found [here](https://github.com/coreos/etcd/blob/b041ce5d514a4b4aaeefbffb008f0c7570a18986/integration/v3_grpc_test.go#L1601-L1757).
Since [v3.2.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v320-2017-06-09), [server denies incoming peer certs with wrong IP `SAN`](https://github.com/etcd-io/etcd/pull/7687). For instance, if peer cert contains any IP addresses in Subject Alternative Name (SAN) field, server authenticates a peer only when the remote IP address matches one of those IP addresses. This is to prevent unauthorized endpoints from joining the cluster. For example, peer B's CSR (with `cfssl`) is:
Since [v3.2.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md#v320-2017-06-09), [server denies incoming peer certs with wrong IP `SAN`](https://github.com/coreos/etcd/pull/7687). For instance, if peer cert contains any IP addresses in Subject Alternative Name (SAN) field, server authenticates a peer only when the remote IP address matches one of those IP addresses. This is to prevent unauthorized endpoints from joining the cluster. For example, peer B's CSR (with `cfssl`) is:
```json
{
@@ -270,7 +268,7 @@ Since [v3.2.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v320
when peer B's actual IP address is `10.138.0.2`, not `10.138.0.27`. When peer B tries to join the cluster, peer A will reject B with the error `x509: certificate is valid for 10.138.0.27, not 10.138.0.2`, because B's remote IP address does not match the one in Subject Alternative Name (SAN) field.
Since [v3.2.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v320-2017-06-09), [server resolves TLS `DNSNames` when checking `SAN`](https://github.com/etcd-io/etcd/pull/7767). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server authenticates a peer only when forward-lookups (`dig b.com`) on those DNS names have matching IP with the remote IP address. For example, peer B's CSR (with `cfssl`) is:
Since [v3.2.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md#v320-2017-06-09), [server resolves TLS `DNSNames` when checking `SAN`](https://github.com/coreos/etcd/pull/7767). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server authenticates a peer only when forward-lookups (`dig b.com`) on those DNS names have matching IP with the remote IP address. For example, peer B's CSR (with `cfssl`) is:
```json
{
@@ -282,7 +280,7 @@ Since [v3.2.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v320
when peer B's remote IP address is `10.138.0.2`. When peer B tries to join the cluster, peer A looks up the incoming host `b.com` to get the list of IP addresses (e.g. `dig b.com`). And rejects B if the list does not contain the IP `10.138.0.2`, with the error `tls: 10.138.0.2 does not match any of DNSNames ["b.com"]`.
Since [v3.2.2](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v322-2017-07-07), [server accepts connections if IP matches, without checking DNS entries](https://github.com/etcd-io/etcd/pull/8223). For instance, if peer cert contains IP addresses and DNS names in Subject Alternative Name (SAN) field, and the remote IP address matches one of those IP addresses, server just accepts connection without further checking the DNS names. For example, peer B's CSR (with `cfssl`) is:
Since [v3.2.2](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md#v322-2017-07-07), [server accepts connections if IP matches, without checking DNS entries](https://github.com/coreos/etcd/pull/8223). For instance, if peer cert contains IP addresses and DNS names in Subject Alternative Name (SAN) field, and the remote IP address matches one of those IP addresses, server just accepts connection without further checking the DNS names. For example, peer B's CSR (with `cfssl`) is:
```json
{
@@ -293,9 +291,9 @@ Since [v3.2.2](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v322
],
```
when peer B's remote IP address is `10.138.0.2` and `invalid.domain` is a invalid host. When peer B tries to join the cluster, peer A successfully authenticates B, since Subject Alternative Name (SAN) field has a valid matching IP address. See [issue#8206](https://github.com/etcd-io/etcd/issues/8206) for more detail.
when peer B's remote IP address is `10.138.0.2` and `invalid.domain` is a invalid host. When peer B tries to join the cluster, peer A successfully authenticates B, since Subject Alternative Name (SAN) field has a valid matching IP address. See [issue#8206](https://github.com/coreos/etcd/issues/8206) for more detail.
Since [v3.2.5](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v325-2017-08-04), [server supports reverse-lookup on wildcard DNS `SAN`](https://github.com/etcd-io/etcd/pull/8281). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server first reverse-lookups the remote IP address to get a list of names mapping to that address (e.g. `nslookup IPADDR`). Then accepts the connection if those names have a matching name with peer cert's DNS names (either by exact or wildcard match). If none is matched, server forward-lookups each DNS entry in peer cert (e.g. look up `example.default.svc` when the entry is `*.example.default.svc`), and accepts connection only when the host's resolved addresses have the matching IP address with the peer's remote IP address. For example, peer B's CSR (with `cfssl`) is:
Since [v3.2.5](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md#v325-2017-08-04), [server supports reverse-lookup on wildcard DNS `SAN`](https://github.com/coreos/etcd/pull/8281). For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server first reverse-lookups the remote IP address to get a list of names mapping to that address (e.g. `nslookup IPADDR`). Then accepts the connection if those names have a matching name with peer cert's DNS names (either by exact or wildcard match). If none is matched, server forward-lookups each DNS entry in peer cert (e.g. look up `example.default.svc` when the entry is `*.example.default.svc`), and accepts connection only when the host's resolved addresses have the matching IP address with the peer's remote IP address. For example, peer B's CSR (with `cfssl`) is:
```json
{
@@ -306,9 +304,9 @@ Since [v3.2.5](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md#v325
],
```
when peer B's remote IP address is `10.138.0.2`. When peer B tries to join the cluster, peer A reverse-lookup the IP `10.138.0.2` to get the list of host names. And either exact or wildcard match the host names with peer B's cert DNS names in Subject Alternative Name (SAN) field. If none of reverse/forward lookups worked, it returns an error `"tls: "10.138.0.2" does not match any of DNSNames ["*.example.default.svc","*.example.default.svc.cluster.local"]`. See [issue#8268](https://github.com/etcd-io/etcd/issues/8268) for more detail.
when peer B's remote IP address is `10.138.0.2`. When peer B tries to join the cluster, peer A reverse-lookup the IP `10.138.0.2` to get the list of host names. And either exact or wildcard match the host names with peer B's cert DNS names in Subject Alternative Name (SAN) field. If none of reverse/forward lookups worked, it returns an error `"tls: "10.138.0.2" does not match any of DNSNames ["*.example.default.svc","*.example.default.svc.cluster.local"]`. See [issue#8268](https://github.com/coreos/etcd/issues/8268) for more detail.
[v3.3.0](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md) adds [`etcd --peer-cert-allowed-cn`](https://github.com/etcd-io/etcd/pull/8616) flag to support [CN(Common Name)-based auth for inter-peer connections](https://github.com/etcd-io/etcd/issues/8262). Kubernetes TLS bootstrapping involves generating dynamic certificates for etcd members and other system components (e.g. API server, kubelet, etc.). Maintaining different CAs for each component provides tighter access control to etcd cluster but often tedious. When `--peer-cert-allowed-cn` flag is specified, node can only join with matching common name even with shared CAs. For example, each member in 3-node cluster is set up with CSRs (with `cfssl`) as below:
[v3.3.0](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md) adds [`etcd --peer-cert-allowed-cn`](https://github.com/coreos/etcd/pull/8616) flag to support [CN(Common Name)-based auth for inter-peer connections](https://github.com/coreos/etcd/issues/8262). Kubernetes TLS bootstrapping involves generating dynamic certificates for etcd members and other system components (e.g. API server, kubelet, etc.). Maintaining different CAs for each component provides tighter access control to etcd cluster but often tedious. When `--peer-cert-allowed-cn` flag is specified, node can only join with matching common name even with shared CAs. For example, each member in 3-node cluster is set up with CSRs (with `cfssl`) as below:
```json
{
@@ -368,7 +366,7 @@ I | embed: serving client requests on 127.0.0.1:22379
I | embed: serving client requests on 127.0.0.1:2379
```
[v3.2.19](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.2.md) and [v3.3.4](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md) fixes TLS reload when [certificate SAN field only includes IP addresses but no domain names](https://github.com/etcd-io/etcd/issues/9541). For example, a member is set up with CSRs (with `cfssl`) as below:
[v3.2.19](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.2.md) and [v3.3.4](https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md) fixes TLS reload when [certificate SAN field only includes IP addresses but no domain names](https://github.com/coreos/etcd/issues/9541). For example, a member is set up with CSRs (with `cfssl`) as below:
```json
{
@@ -380,7 +378,7 @@ I | embed: serving client requests on 127.0.0.1:2379
In Go, server calls `(*tls.Config).GetCertificate` for TLS reload if and only if server's `(*tls.Config).Certificates` field is not empty, or `(*tls.ClientHelloInfo).ServerName` is not empty with a valid SNI from the client. Previously, etcd always populates `(*tls.Config).Certificates` on the initial client TLS handshake, as non-empty. Thus, client was always expected to supply a matching SNI in order to pass the TLS verification and to trigger `(*tls.Config).GetCertificate` to reload TLS assets.
However, a certificate whose SAN field does [not include any domain names but only IP addresses](https://github.com/etcd-io/etcd/issues/9541) would request `*tls.ClientHelloInfo` with an empty `ServerName` field, thus failing to trigger the TLS reload on initial TLS handshake; this becomes a problem when expired certificates need to be replaced online.
However, a certificate whose SAN field does [not include any domain names but only IP addresses](https://github.com/coreos/etcd/issues/9541) would request `*tls.ClientHelloInfo` with an empty `ServerName` field, thus failing to trigger the TLS reload on initial TLS handshake; this becomes a problem when expired certificates need to be replaced online.
Now, `(*tls.Config).Certificates` is created empty on initial TLS client handshake, first to trigger `(*tls.Config).GetCertificate`, and then to populate rest of the certificates on every new TLS connection, even when client SNI is empty (e.g. cert only includes IPs).
@@ -426,14 +424,8 @@ Make sure to sign the certificates with a Subject Name the member's public IP ad
The certificate needs to be signed for the member's FQDN in its Subject Name, use Subject Alternative Names (short IP SANs) to add the IP address. The `etcd-ca` tool provides `--domain=` option for its `new-cert` command, and openssl can make [it][alt-name] too.
### Does etcd encrypt data stored on disk drives?
No. etcd doesn't encrypt key/value data stored on disk drives. If a user need to encrypt data stored on etcd, there are some options:
* Let client applications encrypt and decrypt the data
* Use a feature of underlying storage systems for encrypting stored data like [dm-crypt]
[cfssl]: https://github.com/cloudflare/cfssl
[tls-setup]: ../../hack/tls-setup
[tls-guide]: https://github.com/coreos/docs/blob/master/os/generate-self-signed-certificates.md
[alt-name]: http://wiki.cacert.org/FAQ/subjectAltName
[auth]: authentication.md
[dm-crypt]: https://en.wikipedia.org/wiki/Dm-crypt

View File

@@ -1,6 +1,4 @@
---
title: Supported systems
---
# Supported systems
## Current support
@@ -8,7 +6,7 @@ The following table lists etcd support status for common architectures and opera
| Architecture | Operating System | Status | Maintainers |
| ------------ | ---------------- | ------------ | --------------------------- |
| amd64 | Darwin | Experimental | etcd maintainers |
| amd64 | Darwin | Experimental | etcd maintainers |
| amd64 | Linux | Stable | etcd maintainers |
| amd64 | Windows | Experimental | |
| arm64 | Linux | Experimental | @glevand |
@@ -16,7 +14,7 @@ The following table lists etcd support status for common architectures and opera
| 386 | Linux | Unstable | |
| ppc64le | Linux | Stable | etcd maintainers, @mkumatag |
* etcd-maintainers are listed in https://github.com/etcd-io/etcd/blob/master/MAINTAINERS.
* etcd-maintainers are listed in https://github.com/coreos/etcd/blob/master/MAINTAINERS.
Experimental platforms appear to work in practice and have some platform specific code in etcd, but do not fully conform to the stable support policy. Unstable platforms have been lightly tested, but less than experimental. Unlisted architecture and operating system pairs are currently unsupported; caveat emptor.

View File

@@ -1,6 +1,4 @@
---
title: Migrate applications from using API v2 to API v3
---
# Migrate applications from using API v2 to API v3
The data store v2 is still accessible from the API v2 after upgrading to etcd3. Thus, it will work as before and require no application changes. With etcd 3, applications use the new grpc API v3 to access the mvcc store, which provides more features and improved performance. The mvcc store and the old store v2 are separate and isolated; writes to the store v2 will not affect the mvcc store and, similarly, writes to the mvcc store will not affect the store v2.

View File

@@ -1,6 +1,4 @@
---
title: Versioning
---
# Versioning
## Service versioning

View File

@@ -1,3 +0,0 @@
---
title: Platforms
---

View File

@@ -1,6 +1,4 @@
---
title: Amazon Web Services
---
# Amazon Web Services
This guide assumes operational knowledge of Amazon Web Services (AWS), specifically Amazon Elastic Compute Cloud (EC2). This guide provides an introduction to design considerations when designing an etcd deployment on AWS EC2 and how AWS specific features may be utilized in that context.

View File

@@ -1,6 +1,4 @@
---
title: Container Linux with systemd
---
# Container Linux with systemd
The following guide shows how to run etcd with [systemd][systemd-docs] under [Container Linux][container-linux-docs].

View File

@@ -1,6 +1,4 @@
---
title: FreeBSD
---
# FreeBSD
Starting with version 0.1.2 both etcd and etcdctl have been ported to FreeBSD and can be installed either via packages or ports system. Their versions have been recently updated to 0.2.0 so now etcd and etcdctl can be enjoyed on FreeBSD 10.0 (RC4 as of now) and 9.x, where they have been tested. They might also work when installed from ports on earlier versions of FreeBSD, but it is untested; caveat emptor.

View File

@@ -1,6 +1,4 @@
---
title: Production users
---
# Production users
This document tracks people and use cases for etcd in production. By creating a list of production use cases we hope to build a community of advisors that we can reach out to with experience using various etcd applications, operation environments, and cluster sizes. The etcd development team may reach out periodically to check-in on how etcd is working in the field and update this list.
@@ -239,12 +237,3 @@ At [Branch][branch], we use kubernetes heavily as our core microservice platform
- *Environment*: Bare Metal
- *Backups*: None, all data is considered ephemeral.
## Transwarp
- *Application*: Transwarp Data Cloud, Transwarp Operating System, Transwarp Data Hub, Sophon
- *Launched*: January 2016
- *Cluster Size*: Multiple clusters, multiple sizes
- *Order of Data Size*: Megabytes
- *Operator*: Trasnwarp Operating System
- *Environment*: Bare Metal, Container
- *Backups*: backup scripts

View File

@@ -1,6 +1,4 @@
---
title: Reporting bugs
---
# Reporting bugs
If any part of the etcd project has bugs or documentation mistakes, please let us know by [opening an issue][etcd-issue]. We treat bugs and mistakes very seriously and believe no issue is too small. Before creating a bug report, please check that an issue reporting the same problem does not already exist.
@@ -43,5 +41,5 @@ $ sudo journalctl -u etcd2
Due to an upstream systemd bug, journald may miss the last few log lines when its processes exit. If journalctl says etcd stopped without fatal or panic message, try `sudo journalctl -f -t etcd2` to get full log.
[etcd-issue]: https://github.com/etcd-io/etcd/issues/new
[etcd-issue]: https://github.com/coreos/etcd/issues/new
[filing-good-bugs]: http://fantasai.inkedblade.net/style/talks/filing-good-bugs/

View File

@@ -1,214 +0,0 @@
---
title: etcd v3 API
---
The etcd v3 API is designed to give users a more efficient and cleaner abstraction compared to etcd v2. There are a number of semantic and protocol changes in this new API. For an overview [see Xiang Li's video](https://youtu.be/J5AioGtEPeQ?t=211).
To prove out the design of the v3 API the team has also built [a number of example recipes](https://github.com/coreos/etcd/tree/master/contrib/recipes), there is a [video discussing these recipes too](https://www.youtube.com/watch?v=fj-2RY-3yVU&feature=youtu.be&t=590).
# Design
1. Flatten binary key-value space
2. Keep the event history until compaction
- access to old version of keys
- user controlled history compaction
3. Support range query
- Pagination support with limit argument
- Support consistency guarantee across multiple range queries
4. Replace TTL key with Lease
- more efficient/ low cost keep alive
- a logical group of TTL keys
5. Replace CAS/CAD with multi-object Txn
- MUCH MORE powerful and flexible
6. Support efficient watching with multiple ranges
7. RPC API supports the completed set of APIs.
- more efficient than JSON/HTTP
- additional txn/lease support
8. HTTP API supports a subset of APIs.
- easy for people to try out etcd
- easy for people to write simple etcd application
## Notes
### Request Size Limitation
The max request size is around 1MB. Since etcd replicates requests in a streaming fashion, a very large
request might block other requests for a long time. The use case for etcd is to store small configuration
values, so we prevent user from submitting large requests. This also applies to Txn requests. We might loosen
the size in the future a little bit or make it configurable.
## Protobuf Defined API
[api protobuf][api-protobuf]
[kv protobuf][kv-protobuf]
## Examples
### Put a key (foo=bar)
```
// A put is always successful
Put( PutRequest { key = foo, value = bar } )
PutResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 1,
raft_term = 0x1,
}
```
### Get a key (assume we have foo=bar)
```
Get ( RangeRequest { key = foo } )
RangeResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 1,
raft_term = 0x1,
kvs = {
{
key = foo,
value = bar,
create_revision = 1,
mod_revision = 1,
version = 1;
},
},
}
```
### Range over a key space (assume we have foo0=bar0… foo100=bar100)
```
Range ( RangeRequest { key = foo, end_key = foo80, limit = 30 } )
RangeResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 100,
raft_term = 0x1,
kvs = {
{
key = foo0,
value = bar0,
create_revision = 1,
mod_revision = 1,
version = 1;
},
...,
{
key = foo30,
value = bar30,
create_revision = 30,
mod_revision = 30,
version = 1;
},
},
}
```
### Finish a txn (assume we have foo0=bar0, foo1=bar1)
```
Txn(TxnRequest {
// mod_revision of foo0 is equal to 1, mod_revision of foo1 is greater than 1
compare = {
{compareType = equal, key = foo0, mod_revision = 1},
{compareType = greater, key = foo1, mod_revision = 1}}
},
// if the comparison succeeds, put foo2 = bar2
success = {PutRequest { key = foo2, value = success }},
// if the comparison fails, put foo2=fail
failure = {PutRequest { key = foo2, value = failure }},
)
TxnResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 3,
raft_term = 0x1,
succeeded = true,
responses = {
// response of PUT foo2=success
{
cluster_id = 0x1000,
member_id = 0x1,
revision = 3,
raft_term = 0x1,
}
}
}
```
### Watch on a key/range
```
Watch( WatchRequest{
key = foo,
end_key = fop, // prefix foo
start_revision = 20,
end_revision = 10000,
// server decided notification frequency
progress_notification = true,
}
… // this can be a watch request stream
)
// put (foo0=bar0) event at 3
WatchResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 3,
raft_term = 0x1,
event_type = put,
kv = {
key = foo0,
value = bar0,
create_revision = 1,
mod_revision = 1,
version = 1;
},
}
// a notification at 2000
WatchResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 2000,
raft_term = 0x1,
// nil event as notification
}
// put (foo0=bar3000) event at 3000
WatchResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 3000,
raft_term = 0x1,
event_type = put,
kv = {
key = foo0,
value = bar3000,
create_revision = 1,
mod_revision = 3000,
version = 2;
},
}
```
[api-protobuf]: https://github.com/etcd-io/etcd/blob/master/etcdserver/etcdserverpb/rpc.proto
[kv-protobuf]: https://github.com/etcd-io/etcd/blob/master/mvcc/mvccpb/kv.proto

211
Documentation/rfc/v3api.md Normal file
View File

@@ -0,0 +1,211 @@
# Overview
The etcd v3 API is designed to give users a more efficient and cleaner abstraction compared to etcd v2. There are a number of semantic and protocol changes in this new API. For an overview [see Xiang Li's video](https://youtu.be/J5AioGtEPeQ?t=211).
To prove out the design of the v3 API the team has also built [a number of example recipes](https://github.com/coreos/etcd/tree/master/contrib/recipes), there is a [video discussing these recipes too](https://www.youtube.com/watch?v=fj-2RY-3yVU&feature=youtu.be&t=590).
# Design
1. Flatten binary key-value space
2. Keep the event history until compaction
- access to old version of keys
- user controlled history compaction
3. Support range query
- Pagination support with limit argument
- Support consistency guarantee across multiple range queries
4. Replace TTL key with Lease
- more efficient/ low cost keep alive
- a logical group of TTL keys
5. Replace CAS/CAD with multi-object Txn
- MUCH MORE powerful and flexible
6. Support efficient watching with multiple ranges
7. RPC API supports the completed set of APIs.
- more efficient than JSON/HTTP
- additional txn/lease support
8. HTTP API supports a subset of APIs.
- easy for people to try out etcd
- easy for people to write simple etcd application
## Notes
### Request Size Limitation
The max request size is around 1MB. Since etcd replicates requests in a streaming fashion, a very large
request might block other requests for a long time. The use case for etcd is to store small configuration
values, so we prevent user from submitting large requests. This also applies to Txn requests. We might loosen
the size in the future a little bit or make it configurable.
## Protobuf Defined API
[api protobuf][api-protobuf]
[kv protobuf][kv-protobuf]
## Examples
### Put a key (foo=bar)
```
// A put is always successful
Put( PutRequest { key = foo, value = bar } )
PutResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 1,
raft_term = 0x1,
}
```
### Get a key (assume we have foo=bar)
```
Get ( RangeRequest { key = foo } )
RangeResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 1,
raft_term = 0x1,
kvs = {
{
key = foo,
value = bar,
create_revision = 1,
mod_revision = 1,
version = 1;
},
},
}
```
### Range over a key space (assume we have foo0=bar0… foo100=bar100)
```
Range ( RangeRequest { key = foo, end_key = foo80, limit = 30 } )
RangeResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 100,
raft_term = 0x1,
kvs = {
{
key = foo0,
value = bar0,
create_revision = 1,
mod_revision = 1,
version = 1;
},
...,
{
key = foo30,
value = bar30,
create_revision = 30,
mod_revision = 30,
version = 1;
},
},
}
```
### Finish a txn (assume we have foo0=bar0, foo1=bar1)
```
Txn(TxnRequest {
// mod_revision of foo0 is equal to 1, mod_revision of foo1 is greater than 1
compare = {
{compareType = equal, key = foo0, mod_revision = 1},
{compareType = greater, key = foo1, mod_revision = 1}}
},
// if the comparison succeeds, put foo2 = bar2
success = {PutRequest { key = foo2, value = success }},
// if the comparison fails, put foo2=fail
failure = {PutRequest { key = foo2, value = failure }},
)
TxnResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 3,
raft_term = 0x1,
succeeded = true,
responses = {
// response of PUT foo2=success
{
cluster_id = 0x1000,
member_id = 0x1,
revision = 3,
raft_term = 0x1,
}
}
}
```
### Watch on a key/range
```
Watch( WatchRequest{
key = foo,
end_key = fop, // prefix foo
start_revision = 20,
end_revision = 10000,
// server decided notification frequency
progress_notification = true,
}
… // this can be a watch request stream
)
// put (foo0=bar0) event at 3
WatchResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 3,
raft_term = 0x1,
event_type = put,
kv = {
key = foo0,
value = bar0,
create_revision = 1,
mod_revision = 1,
version = 1;
},
}
// a notification at 2000
WatchResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 2000,
raft_term = 0x1,
// nil event as notification
}
// put (foo0=bar3000) event at 3000
WatchResponse {
cluster_id = 0x1000,
member_id = 0x1,
revision = 3000,
raft_term = 0x1,
event_type = put,
kv = {
key = foo0,
value = bar3000,
create_revision = 1,
mod_revision = 3000,
version = 2;
},
}
```
[api-protobuf]: https://github.com/coreos/etcd/blob/master/etcdserver/etcdserverpb/rpc.proto
[kv-protobuf]: https://github.com/coreos/etcd/blob/master/mvcc/mvccpb/kv.proto

View File

@@ -1,6 +1,4 @@
---
title: Tuning
---
# Tuning
The default settings in etcd should work well for installations on a local network where the average network latency is low. However, when using etcd across multiple data centers or over networks with high latency, the heartbeat interval and election timeout settings may need tuning.
@@ -73,7 +71,7 @@ dropped MsgAppResp to 247ae21ff9436b2d since streamMsg's sending buffer is full
These errors may be resolved by prioritizing etcd's peer traffic over its client traffic. On Linux, peer traffic can be prioritized by using the traffic control mechanism:
```sh
```
tc qdisc add dev eth0 root handle 1: prio bands 3
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip sport 2380 0xffff flowid 1:1
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 2380 0xffff flowid 1:1

View File

@@ -1,3 +0,0 @@
---
title: Upgrading
---

View File

@@ -1,6 +1,4 @@
---
title: Upgrade etcd from 2.3 to 3.0
---
## Upgrade etcd from 2.3 to 3.0
In the general case, upgrading from etcd 2.3 to 3.0 can be a zero-downtime, rolling upgrade:
- one by one, stop the etcd v2.3 processes and replace them with etcd v3.0 processes
@@ -10,7 +8,7 @@ Before [starting an upgrade](#upgrade-procedure), read through the rest of this
### Upgrade checklists
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/etcd-io/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
#### Upgrade requirements
@@ -126,8 +124,8 @@ $ ETCDCTL_API=3 etcdctl endpoint health
## Known Issues
- etcd &lt; v3.1 does not work properly if built with Go &gt; v1.7. See [Issue 6951](https://github.com/etcd-io/etcd/issues/6951) for additional information.
- etcd &lt; v3.1 does not work properly if built with Go &gt; v1.7. See [Issue 6951](https://github.com/coreos/etcd/issues/6951) for additional information.
- If an error such as `transport: http2Client.notifyError got notified that the client transport was broken unexpected EOF.` shows up in the etcd server logs, be sure etcd is a pre-built release or built with (etcd v3.1+ &amp; go v1.7+) or (etcd &lt;v3.1 &amp; go v1.6.x).
- Adding a v3 node to v2.3 cluster during upgrades is not supported and could trigger panics. See [Issue 7249](https://github.com/etcd-io/etcd/issues/7429) for additional information. Mixed versions of etcd members are only allowed during v3 migration. Finish upgrades before making any membership changes.
- Adding a v3 node to v2.3 cluster during upgrades is not supported and could trigger panics. See [Issue 7249](https://github.com/coreos/etcd/issues/7429) for additional information. Mixed versions of etcd members are only allowed during v3 migration. Finish upgrades before making any membership changes.
[etcd-contact]: https://groups.google.com/forum/#!forum/etcd-dev

View File

@@ -1,6 +1,4 @@
---
title: Upgrade etcd from 3.0 to 3.1
---
## Upgrade etcd from 3.0 to 3.1
In the general case, upgrading from etcd 3.0 to 3.1 can be a zero-downtime, rolling upgrade:
- one by one, stop the etcd v3.0 processes and replace them with etcd v3.1 processes
@@ -10,7 +8,7 @@ Before [starting an upgrade](#upgrade-procedure), read through the rest of this
### Upgrade checklists
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/etcd-io/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
#### Monitoring

View File

@@ -1,6 +1,4 @@
---
title: Upgrade etcd from 3.1 to 3.2
---
## Upgrade etcd from 3.1 to 3.2
In the general case, upgrading from etcd 3.1 to 3.2 can be a zero-downtime, rolling upgrade:
- one by one, stop the etcd v3.1 processes and replace them with etcd v3.2 processes
@@ -10,7 +8,7 @@ Before [starting an upgrade](#upgrade-procedure), read through the rest of this
### Upgrade checklists
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/etcd-io/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
Highlighted breaking changes in 3.2.
@@ -18,7 +16,7 @@ Highlighted breaking changes in 3.2.
Higher `--snapshot-count` holds more Raft entries in memory until snapshot, thus causing [recurrent higher memory usage](https://github.com/kubernetes/kubernetes/issues/60589#issuecomment-371977156). Since leader retains latest Raft entries for longer, a slow follower has more time to catch up before leader snapshot. `--snapshot-count` is a tradeoff between higher memory usage and better availabilities of slow followers.
Since v3.2, the default value of `--snapshot-count` has [changed from from 10,000 to 100,000](https://github.com/etcd-io/etcd/pull/7160).
Since v3.2, the default value of `--snapshot-count` has [changed from from 10,000 to 100,000](https://github.com/coreos/etcd/pull/7160).
#### Changed gRPC dependency (>=3.2.10)
@@ -47,7 +45,7 @@ clientv3.SetLogger(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr))
##### Deprecated `grpc.ErrClientConnTimeout`
Previously, `grpc.ErrClientConnTimeout` error is returned on client dial time-outs. 3.2 instead returns `context.DeadlineExceeded` (see [#8504](https://github.com/etcd-io/etcd/issues/8504)).
Previously, `grpc.ErrClientConnTimeout` error is returned on client dial time-outs. 3.2 instead returns `context.DeadlineExceeded` (see [#8504](https://github.com/coreos/etcd/issues/8504)).
Before
@@ -149,7 +147,7 @@ err.Error() == "rpc error: code = ResourceExhausted desc = grpc: received messag
#### Changed raw gRPC client wrappers
3.2.12 or later changes the function signatures of `clientv3` gRPC client wrapper. This change was needed to support [custom `grpc.CallOption` on message size limits](https://github.com/etcd-io/etcd/pull/9047).
3.2.12 or later changes the function signatures of `clientv3` gRPC client wrapper. This change was needed to support [custom `grpc.CallOption` on message size limits](https://github.com/coreos/etcd/pull/9047).
Before and after
@@ -172,7 +170,7 @@ Before and after
#### Changed `clientv3.Lease.TimeToLive` API
Previously, `clientv3.Lease.TimeToLive` API returned `lease.ErrLeaseNotFound` on non-existent lease ID. 3.2 instead returns TTL=-1 in its response and no error (see [#7305](https://github.com/etcd-io/etcd/pull/7305)).
Previously, `clientv3.Lease.TimeToLive` API returned `lease.ErrLeaseNotFound` on non-existent lease ID. 3.2 instead returns TTL=-1 in its response and no error (see [#7305](https://github.com/coreos/etcd/pull/7305)).
Before
@@ -214,7 +212,7 @@ clientv3yaml.NewConfig
3.2 now rejects domains names for `--listen-peer-urls` and `--listen-client-urls` (3.1 only prints out warnings), since domain name is invalid for network interface binding. Make sure that those URLs are properly formated as `scheme://IP:port`.
See [issue #6336](https://github.com/etcd-io/etcd/issues/6336) for more contexts.
See [issue #6336](https://github.com/coreos/etcd/issues/6336) for more contexts.
### Server upgrade checklists

View File

@@ -1,6 +1,4 @@
---
title: Upgrade etcd from 3.2 to 3.3
---
## Upgrade etcd from 3.2 to 3.3
In the general case, upgrading from etcd 3.2 to 3.3 can be a zero-downtime, rolling upgrade:
- one by one, stop the etcd v3.2 processes and replace them with etcd v3.3 processes
@@ -10,13 +8,13 @@ Before [starting an upgrade](#upgrade-procedure), read through the rest of this
### Upgrade checklists
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/etcd-io/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
Highlighted breaking changes in 3.3.
#### Changed value type of `etcd --auto-compaction-retention` flag to `string`
Changed `--auto-compaction-retention` flag to [accept string values](https://github.com/etcd-io/etcd/pull/8563) with [finer granularity](https://github.com/etcd-io/etcd/issues/8503). Now that `--auto-compaction-retention` accepts string values, etcd configuration YAML file `auto-compaction-retention` field must be changed to `string` type. Previously, `--config-file etcd.config.yaml` can have `auto-compaction-retention: 24` field, now must be `auto-compaction-retention: "24"` or `auto-compaction-retention: "24h"`. If configured as `--auto-compaction-mode periodic --auto-compaction-retention "24h"`, the time duration value for `--auto-compaction-retention` flag must be valid for [`time.ParseDuration`](https://golang.org/pkg/time/#ParseDuration) function in Go.
Changed `--auto-compaction-retention` flag to [accept string values](https://github.com/coreos/etcd/pull/8563) with [finer granularity](https://github.com/coreos/etcd/issues/8503). Now that `--auto-compaction-retention` accepts string values, etcd configuration YAML file `auto-compaction-retention` field must be changed to `string` type. Previously, `--config-file etcd.config.yaml` can have `auto-compaction-retention: 24` field, now must be `auto-compaction-retention: "24"` or `auto-compaction-retention: "24h"`. If configured as `--auto-compaction-mode periodic --auto-compaction-retention "24h"`, the time duration value for `--auto-compaction-retention` flag must be valid for [`time.ParseDuration`](https://golang.org/pkg/time/#ParseDuration) function in Go.
```diff
# etcd.config.yaml
@@ -59,7 +57,7 @@ func (e *EtcdServer) Start() error {
#### Added `embed.Config.LogOutput` struct
**Note that this field has been renamed to `embed.Config.LogOutputs` in `[]string` type in v3.4. Please see [v3.4 upgrade guide](https://github.com/etcd-io/etcd/blob/master/Documentation/upgrades/upgrade_3_4.md) for more details.**
**Note that this field has been renamed to `embed.Config.LogOutputs` in `[]string` type in v3.4. Please see [v3.4 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_4.md) for more details.**
Field `LogOutput` is added to `embed.Config`:
@@ -82,7 +80,7 @@ WARNING: 2017/11/02 11:35:51 grpc: addrConn.resetTransport failed to create clie
From v3.3, gRPC server logs are disabled by default.
**Note that `embed.Config.SetupLogging` method has been deprecated in v3.4. Please see [v3.4 upgrade guide](https://github.com/etcd-io/etcd/blob/master/Documentation/upgrades/upgrade_3_4.md) for more details.**
**Note that `embed.Config.SetupLogging` method has been deprecated in v3.4. Please see [v3.4 upgrade guide](https://github.com/coreos/etcd/blob/master/Documentation/upgrades/upgrade_3_4.md) for more details.**
```go
import "github.com/coreos/etcd/embed"
@@ -197,7 +195,7 @@ err.Error() == "rpc error: code = ResourceExhausted desc = grpc: received messag
#### Changed raw gRPC client wrapper function signatures
3.3 changes the function signatures of `clientv3` gRPC client wrapper. This change was needed to support [custom `grpc.CallOption` on message size limits](https://github.com/etcd-io/etcd/pull/9047).
3.3 changes the function signatures of `clientv3` gRPC client wrapper. This change was needed to support [custom `grpc.CallOption` on message size limits](https://github.com/coreos/etcd/pull/9047).
Before and after
@@ -326,7 +324,7 @@ clientv3.SetLogger(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr))
##### Deprecated `grpc.ErrClientConnTimeout`
Previously, `grpc.ErrClientConnTimeout` error is returned on client dial time-outs. 3.3 instead returns `context.DeadlineExceeded` (see [#8504](https://github.com/etcd-io/etcd/issues/8504)).
Previously, `grpc.ErrClientConnTimeout` error is returned on client dial time-outs. 3.3 instead returns `context.DeadlineExceeded` (see [#8504](https://github.com/coreos/etcd/issues/8504)).
Before
@@ -369,52 +367,6 @@ After
docker pull gcr.io/etcd-development/etcd:v3.3.0
```
### Upgrades to >= v3.3.14
[v3.3.14](https://github.com/etcd-io/etcd/releases/tag/v3.3.14) had to include some features from 3.4, while trying to minimize the difference between client balancer implementation. This release fixes ["kube-apiserver 1.13.x refuses to work when first etcd-server is not available" (kubernetes#72102)](https://github.com/kubernetes/kubernetes/issues/72102).
`grpc.ErrClientConnClosing` has been [deprecated in gRPC >= 1.10](https://github.com/grpc/grpc-go/pull/1854).
```diff
import (
+ "go.etcd.io/etcd/clientv3"
"google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
)
_, err := kvc.Get(ctx, "a")
-if err == grpc.ErrClientConnClosing {
+if clientv3.IsConnCanceled(err) {
// or
+s, ok := status.FromError(err)
+if ok {
+ if s.Code() == codes.Canceled
```
[The new client balancer](https://github.com/etcd-io/etcd/blob/master/Documentation/learning/design-client.md) uses an asynchronous resolver to pass endpoints to the gRPC dial function. As a result, [v3.3.14](https://github.com/etcd-io/etcd/releases/tag/v3.3.14) or later requires `grpc.WithBlock` dial option to wait until the underlying connection is up.
```diff
import (
"time"
"go.etcd.io/etcd/clientv3"
+ "google.golang.org/grpc"
)
+// "grpc.WithBlock()" to block until the underlying connection is up
ccfg := clientv3.Config{
Endpoints: []string{"localhost:2379"},
DialTimeout: time.Second,
+ DialOptions: []grpc.DialOption{grpc.WithBlock()},
DialKeepAliveTime: time.Second,
DialKeepAliveTimeout: 500 * time.Millisecond,
}
```
Please see [CHANGELOG](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.3.md) for a full list of changes.
### Server upgrade checklists
#### Upgrade requirements

View File

@@ -0,0 +1,460 @@
## Upgrade etcd from 3.3 to 3.4
In the general case, upgrading from etcd 3.3 to 3.4 can be a zero-downtime, rolling upgrade:
- one by one, stop the etcd v3.3 processes and replace them with etcd v3.4 processes
- after running all v3.4 processes, new features in v3.4 are available to the cluster
Before [starting an upgrade](#upgrade-procedure), read through the rest of this guide to prepare.
### Upgrade checklists
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
Highlighted breaking changes in 3.4.
#### Make `ETCDCTL_API=3 etcdctl` default
`ETCDCTL_API=3` is now the default.
```diff
etcdctl set foo bar
Error: unknown command "set" for "etcdctl"
-etcdctl set foo bar
+ETCDCTL_API=2 etcdctl set foo bar
bar
ETCDCTL_API=3 etcdctl put foo bar
OK
-ETCDCTL_API=3 etcdctl put foo bar
+etcdctl put foo bar
```
#### Deprecated `etcd --ca-file` and `etcd --peer-ca-file` flags
`--ca-file` and `--peer-ca-file` flags are deprecated; they have been deprecated since v2.1.
```diff
-etcd --ca-file ca-client.crt
+etcd --trusted-ca-file ca-client.crt
```
```diff
-etcd --peer-ca-file ca-peer.crt
+etcd --peer-trusted-ca-file ca-peer.crt
```
#### Promote `etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metrics
v3.4 promotes `etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metrics to `etcd_mvcc_db_total_size_in_bytes`, in order to encourage etcd storage monitoring.
`etcd_debugging_mvcc_db_total_size_in_bytes` is still served in v3.4 for backward compatibilities. It will be completely deprecated in v3.5.
```diff
-etcd_debugging_mvcc_db_total_size_in_bytes
+etcd_mvcc_db_total_size_in_bytes
```
Note that `etcd_debugging_*` namespace metrics have been marked as experimental. As we improve monitoring guide, we will promote more metrics.
#### Deprecating `etcd --log-output` flag (now `--log-outputs`)
Rename [`etcd --log-output` to `--log-outputs`](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs. **`etcd --logger=capnslog` does not support multiple log outputs.**
**`etcd --log-output`** will be deprecated in v3.5. **`etcd --logger=capnslog` will be deprecated in v3.5**.
```diff
-etcd --log-output=stderr
+etcd --log-outputs=stderr
+# to write logs to stderr and a.log file at the same time
+# only "--logger=zap" supports multiple writers
+etcd --logger=zap --log-outputs=stderr,a.log
```
v3.4 adds `etcd --logger=zap --log-outputs=stderr` support for structured logging and multiple log outputs. Main motivation is to promote automated etcd monitoring, rather than looking back server logs when it starts breaking. Future development will make etcd log as few as possible, and make etcd easier to monitor with metrics and alerts. **`etcd --logger=capnslog` will be deprecated in v3.5**.
#### Changed `log-outputs` field type in `etcd --config-file` to `[]string`
Now that `log-outputs` (old field name `log-output`) accepts multiple writers, etcd configuration YAML file `log-outputs` field must be changed to `[]string` type as below:
```diff
# Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd.
-log-output: default
+log-outputs: [default]
```
#### Renamed `embed.Config.LogOutput` to `embed.Config.LogOutputs`
Renamed [**`embed.Config.LogOutput`** to **`embed.Config.LogOutputs`**](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs. And changed [`embed.Config.LogOutput` type from `string` to `[]string`](https://github.com/coreos/etcd/pull/9579) to support multiple log outputs.
```diff
import "github.com/coreos/etcd/embed"
cfg := &embed.Config{Debug: false}
-cfg.LogOutput = "stderr"
+cfg.LogOutputs = []string{"stderr"}
```
#### v3.5 deprecates `capnslog`
**v3.5 will deprecate `etcd --log-package-levels` flag for `capnslog`**; `etcd --logger=zap --log-outputs=stderr` will the default. **v3.5 will deprecate `[CLIENT-URL]/config/local/log` endpoint.**
#### Deprecated `pkg/transport.TLSInfo.CAFile` field
Deprecated `pkg/transport.TLSInfo.CAFile` field.
```diff
import "github.com/coreos/etcd/pkg/transport"
tlsInfo := transport.TLSInfo{
CertFile: "/tmp/test-certs/test.pem",
KeyFile: "/tmp/test-certs/test-key.pem",
- CAFile: "/tmp/test-certs/trusted-ca.pem",
+ TrustedCAFile: "/tmp/test-certs/trusted-ca.pem",
}
tlsConfig, err := tlsInfo.ClientConfig()
if err != nil {
panic(err)
}
```
#### Changed `embed.Config.SnapCount` to `embed.Config.SnapshotCount`
To be consistent with the flag name `etcd --snapshot-count`, `embed.Config.SnapCount` field has been renamed to `embed.Config.SnapshotCount`:
```diff
import "github.com/coreos/etcd/embed"
cfg := embed.NewConfig()
-cfg.SnapCount = 100000
+cfg.SnapshotCount = 100000
```
#### Changed `etcdserver.ServerConfig.SnapCount` to `etcdserver.ServerConfig.SnapshotCount`
To be consistent with the flag name `etcd --snapshot-count`, `etcdserver.ServerConfig.SnapCount` field has been renamed to `etcdserver.ServerConfig.SnapshotCount`:
```diff
import "github.com/coreos/etcd/etcdserver"
srvcfg := etcdserver.ServerConfig{
- SnapCount: 100000,
+ SnapshotCount: 100000,
```
#### Changed function signature in package `wal`
Changed `wal` function signatures to support structured logger.
```diff
import "github.com/coreos/etcd/wal"
+import "go.uber.org/zap"
+lg, _ = zap.NewProduction()
-wal.Open(dirpath, snap)
+wal.Open(lg, dirpath, snap)
-wal.OpenForRead(dirpath, snap)
+wal.OpenForRead(lg, dirpath, snap)
-wal.Repair(dirpath)
+wal.Repair(lg, dirpath)
-wal.Create(dirpath, metadata)
+wal.Create(lg, dirpath, metadata)
```
#### Deprecated `embed.Config.SetupLogging`
`embed.Config.SetupLogging` has been removed in order to prevent wrong logging configuration, and now set up automatically.
```diff
import "github.com/coreos/etcd/embed"
cfg := &embed.Config{Debug: false}
-cfg.SetupLogging()
```
#### Changed gRPC gateway HTTP endpoints (replaced `/v3beta` with `/v3`)
Before
```bash
curl -L http://localhost:2379/v3beta/kv/put \
-X POST -d '{"key": "Zm9v", "value": "YmFy"}'
```
After
```bash
curl -L http://localhost:2379/v3/kv/put \
-X POST -d '{"key": "Zm9v", "value": "YmFy"}'
```
Requests to `/v3beta` endpoints will redirect to `/v3`, and `/v3beta` will be removed in 3.5 release.
#### Deprecated container image tags
`latest` and minor version images tags are deprecated:
```diff
-docker pull gcr.io/etcd-development/etcd:latest
+docker pull gcr.io/etcd-development/etcd:v3.4.0
-docker pull gcr.io/etcd-development/etcd:v3.4
+docker pull gcr.io/etcd-development/etcd:v3.4.0
-docker pull gcr.io/etcd-development/etcd:v3.4
+docker pull gcr.io/etcd-development/etcd:v3.4.1
-docker pull gcr.io/etcd-development/etcd:v3.4
+docker pull gcr.io/etcd-development/etcd:v3.4.2
```
### Server upgrade checklists
#### Upgrade requirements
To upgrade an existing etcd deployment to 3.4, the running cluster must be 3.3 or greater. If it's before 3.3, please [upgrade to 3.3](upgrade_3_3.md) before upgrading to 3.4.
Also, to ensure a smooth rolling upgrade, the running cluster must be healthy. Check the health of the cluster by using the `etcdctl endpoint health` command before proceeding.
#### Preparation
Before upgrading etcd, always test the services relying on etcd in a staging environment before deploying the upgrade to the production environment.
Before beginning, [download the snapshot backup](../op-guide/maintenance.md#snapshot-backup). Should something go wrong with the upgrade, it is possible to use this backup to [downgrade](#downgrade) back to existing etcd version. Please note that the `snapshot` command only backs up the v3 data. For v2 data, see [backing up v2 datastore](../v2/admin_guide.md#backing-up-the-datastore).
#### Mixed versions
While upgrading, an etcd cluster supports mixed versions of etcd members, and operates with the protocol of the lowest common version. The cluster is only considered upgraded once all of its members are upgraded to version 3.4. Internally, etcd members negotiate with each other to determine the overall cluster version, which controls the reported version and the supported features.
#### Limitations
Note: If the cluster only has v3 data and no v2 data, it is not subject to this limitation.
If the cluster is serving a v2 data set larger than 50MB, each newly upgraded member may take up to two minutes to catch up with the existing cluster. Check the size of a recent snapshot to estimate the total data size. In other words, it is safest to wait for 2 minutes between upgrading each member.
For a much larger total data size, 100MB or more , this one-time process might take even more time. Administrators of very large etcd clusters of this magnitude can feel free to contact the [etcd team][etcd-contact] before upgrading, and we'll be happy to provide advice on the procedure.
#### Downgrade
If all members have been upgraded to v3.4, the cluster will be upgraded to v3.4, and downgrade from this completed state is **not possible**. If any single member is still v3.3, however, the cluster and its operations remains "v3.3", and it is possible from this mixed cluster state to return to using a v3.3 etcd binary on all members.
Please [download the snapshot backup](../op-guide/maintenance.md#snapshot-backup) to make downgrading the cluster possible even after it has been completely upgraded.
### Upgrade procedure
This example shows how to upgrade a 3-member v3.3 ectd cluster running on a local machine.
#### Step 1: check upgrade requirements
Is the cluster healthy and running v3.3.x?
```bash
etcdctl --endpoints=localhost:2379,localhost:22379,localhost:32379 endpoint health
<<COMMENT
localhost:2379 is healthy: successfully committed proposal: took = 2.118638ms
localhost:22379 is healthy: successfully committed proposal: took = 3.631388ms
localhost:32379 is healthy: successfully committed proposal: took = 2.157051ms
COMMENT
curl http://localhost:2379/version
<<COMMENT
{"etcdserver":"3.3.5","etcdcluster":"3.3.0"}
COMMENT
curl http://localhost:22379/version
<<COMMENT
{"etcdserver":"3.3.5","etcdcluster":"3.3.0"}
COMMENT
curl http://localhost:32379/version
<<COMMENT
{"etcdserver":"3.3.5","etcdcluster":"3.3.0"}
COMMENT
```
#### Step 2: download snapshot backup from leader
[Download the snapshot backup](../op-guide/maintenance.md#snapshot-backup) to provide a downgrade path should any problems occur.
etcd leader is guaranteed to have the latest application data, thus fetch snapshot from leader:
```bash
curl -sL http://localhost:2379/metrics | grep etcd_server_is_leader
<<COMMENT
# HELP etcd_server_is_leader Whether or not this member is a leader. 1 if is, 0 otherwise.
# TYPE etcd_server_is_leader gauge
etcd_server_is_leader 1
COMMENT
curl -sL http://localhost:22379/metrics | grep etcd_server_is_leader
<<COMMENT
etcd_server_is_leader 0
COMMENT
curl -sL http://localhost:32379/metrics | grep etcd_server_is_leader
<<COMMENT
etcd_server_is_leader 0
COMMENT
etcdctl --endpoints=localhost:2379 snapshot save backup.db
<<COMMENT
{"level":"info","ts":1526585787.148433,"caller":"snapshot/v3_snapshot.go:109","msg":"created temporary db file","path":"backup.db.part"}
{"level":"info","ts":1526585787.1485257,"caller":"snapshot/v3_snapshot.go:120","msg":"fetching snapshot","endpoint":"localhost:2379"}
{"level":"info","ts":1526585787.1519694,"caller":"snapshot/v3_snapshot.go:133","msg":"fetched snapshot","endpoint":"localhost:2379","took":0.003502721}
{"level":"info","ts":1526585787.1520295,"caller":"snapshot/v3_snapshot.go:142","msg":"saved","path":"backup.db"}
Snapshot saved at backup.db
COMMENT
```
#### Step 3: stop one existing etcd server
When each etcd process is stopped, expected errors will be logged by other cluster members. This is normal since a cluster member connection has been (temporarily) broken:
```bash
10.237579 I | etcdserver: updating the cluster version from 3.0 to 3.3
10.238315 N | etcdserver/membership: updated the cluster version from 3.0 to 3.3
10.238451 I | etcdserver/api: enabled capabilities for version 3.3
^C21.192174 N | pkg/osutil: received interrupt signal, shutting down...
21.192459 I | etcdserver: 7339c4e5e833c029 starts leadership transfer from 7339c4e5e833c029 to 729934363faa4a24
21.192569 I | raft: 7339c4e5e833c029 [term 8] starts to transfer leadership to 729934363faa4a24
21.192619 I | raft: 7339c4e5e833c029 sends MsgTimeoutNow to 729934363faa4a24 immediately as 729934363faa4a24 already has up-to-date log
WARNING: 2018/05/17 12:45:21 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp: operation was canceled"; Reconnecting to {localhost:2379 0 <nil>}
WARNING: 2018/05/17 12:45:21 grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing
21.193589 I | raft: 7339c4e5e833c029 [term: 8] received a MsgVote message with higher term from 729934363faa4a24 [term: 9]
21.193626 I | raft: 7339c4e5e833c029 became follower at term 9
21.193651 I | raft: 7339c4e5e833c029 [logterm: 8, index: 9, vote: 0] cast MsgVote for 729934363faa4a24 [logterm: 8, index: 9] at term 9
21.193675 I | raft: raft.node: 7339c4e5e833c029 lost leader 7339c4e5e833c029 at term 9
21.194424 I | raft: raft.node: 7339c4e5e833c029 elected leader 729934363faa4a24 at term 9
21.292898 I | etcdserver: 7339c4e5e833c029 finished leadership transfer from 7339c4e5e833c029 to 729934363faa4a24 (took 100.436391ms)
21.292975 I | rafthttp: stopping peer 729934363faa4a24...
21.293206 I | rafthttp: closed the TCP streaming connection with peer 729934363faa4a24 (stream MsgApp v2 writer)
21.293225 I | rafthttp: stopped streaming with peer 729934363faa4a24 (writer)
21.293437 I | rafthttp: closed the TCP streaming connection with peer 729934363faa4a24 (stream Message writer)
21.293459 I | rafthttp: stopped streaming with peer 729934363faa4a24 (writer)
21.293514 I | rafthttp: stopped HTTP pipelining with peer 729934363faa4a24
21.293590 W | rafthttp: lost the TCP streaming connection with peer 729934363faa4a24 (stream MsgApp v2 reader)
21.293610 I | rafthttp: stopped streaming with peer 729934363faa4a24 (stream MsgApp v2 reader)
21.293680 W | rafthttp: lost the TCP streaming connection with peer 729934363faa4a24 (stream Message reader)
21.293700 I | rafthttp: stopped streaming with peer 729934363faa4a24 (stream Message reader)
21.293711 I | rafthttp: stopped peer 729934363faa4a24
21.293720 I | rafthttp: stopping peer b548c2511513015...
21.293987 I | rafthttp: closed the TCP streaming connection with peer b548c2511513015 (stream MsgApp v2 writer)
21.294063 I | rafthttp: stopped streaming with peer b548c2511513015 (writer)
21.294467 I | rafthttp: closed the TCP streaming connection with peer b548c2511513015 (stream Message writer)
21.294561 I | rafthttp: stopped streaming with peer b548c2511513015 (writer)
21.294742 I | rafthttp: stopped HTTP pipelining with peer b548c2511513015
21.294867 W | rafthttp: lost the TCP streaming connection with peer b548c2511513015 (stream MsgApp v2 reader)
21.294892 I | rafthttp: stopped streaming with peer b548c2511513015 (stream MsgApp v2 reader)
21.294990 W | rafthttp: lost the TCP streaming connection with peer b548c2511513015 (stream Message reader)
21.295004 E | rafthttp: failed to read b548c2511513015 on stream Message (context canceled)
21.295013 I | rafthttp: peer b548c2511513015 became inactive
21.295024 I | rafthttp: stopped streaming with peer b548c2511513015 (stream Message reader)
21.295035 I | rafthttp: stopped peer b548c2511513015
```
#### Step 4: restart the etcd server with same configuration
Restart the etcd server with same configuration but with the new etcd binary.
```diff
-etcd-old --name s1 \
+etcd-new --name s1 \
--data-dir /tmp/etcd/s1 \
--listen-client-urls http://localhost:2379 \
--advertise-client-urls http://localhost:2379 \
--listen-peer-urls http://localhost:2380 \
--initial-advertise-peer-urls http://localhost:2380 \
--initial-cluster s1=http://localhost:2380,s2=http://localhost:22380,s3=http://localhost:32380 \
--initial-cluster-token tkn \
+ --initial-cluster-state new \
+ --logger zap \
+ --log-outputs stderr
```
The new v3.4 etcd will publish its information to the cluster. At this point, cluster still operates as v3.3 protocol, which is the lowest common version.
> `{"level":"info","ts":1526586617.1647713,"caller":"membership/cluster.go:485","msg":"set initial cluster version","cluster-id":"7dee9ba76d59ed53","local-member-id":"7339c4e5e833c029","cluster-version":"3.0"}`
> `{"level":"info","ts":1526586617.1648536,"caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.0"}`
> `{"level":"info","ts":1526586617.1649303,"caller":"membership/cluster.go:473","msg":"updated cluster version","cluster-id":"7dee9ba76d59ed53","local-member-id":"7339c4e5e833c029","from":"3.0","from":"3.3"}`
> `{"level":"info","ts":1526586617.1649797,"caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.3"}`
> `{"level":"info","ts":1526586617.2107732,"caller":"etcdserver/server.go:1770","msg":"published local member to cluster through raft","local-member-id":"7339c4e5e833c029","local-member-attributes":"{Name:s1 ClientURLs:[http://localhost:2379]}","request-path":"/0/members/7339c4e5e833c029/attributes","cluster-id":"7dee9ba76d59ed53","publish-timeout":7}`
Verify that each member, and then the entire cluster, becomes healthy with the new v3.4 etcd binary:
```bash
etcdctl endpoint health --endpoints=localhost:2379,localhost:22379,localhost:32379
<<COMMENT
localhost:32379 is healthy: successfully committed proposal: took = 2.337471ms
localhost:22379 is healthy: successfully committed proposal: took = 1.130717ms
localhost:2379 is healthy: successfully committed proposal: took = 2.124843ms
COMMENT
```
Un-upgraded members will log warnings like the following until the entire cluster is upgraded.
This is expected and will cease after all etcd cluster members are upgraded to v3.4:
```
:41.942121 W | etcdserver: member 7339c4e5e833c029 has a higher version 3.4.0
:45.945154 W | etcdserver: the local etcd version 3.3.5 is not up-to-date
```
#### Step 5: repeat *step 3* and *step 4* for rest of the members
When all members are upgraded, the cluster will report upgrading to 3.4 successfully:
Member 1:
> `{"level":"info","ts":1526586949.0920913,"caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.4"}`
> `{"level":"info","ts":1526586949.0921566,"caller":"etcdserver/server.go:2272","msg":"cluster version is updated","cluster-version":"3.4"}`
Member 2:
> `{"level":"info","ts":1526586949.092117,"caller":"membership/cluster.go:473","msg":"updated cluster version","cluster-id":"7dee9ba76d59ed53","local-member-id":"729934363faa4a24","from":"3.3","from":"3.4"}`
> `{"level":"info","ts":1526586949.0923078,"caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.4"}`
Member 3:
> `{"level":"info","ts":1526586949.0921423,"caller":"membership/cluster.go:473","msg":"updated cluster version","cluster-id":"7dee9ba76d59ed53","local-member-id":"b548c2511513015","from":"3.3","from":"3.4"}`
> `{"level":"info","ts":1526586949.0922918,"caller":"api/capability.go:76","msg":"enabled capabilities for version","cluster-version":"3.4"}`
```bash
endpoint health --endpoints=localhost:2379,localhost:22379,localhost:32379
<<COMMENT
localhost:2379 is healthy: successfully committed proposal: took = 492.834µs
localhost:22379 is healthy: successfully committed proposal: took = 1.015025ms
localhost:32379 is healthy: successfully committed proposal: took = 1.853077ms
COMMENT
curl http://localhost:2379/version
<<COMMENT
{"etcdserver":"3.4.0","etcdcluster":"3.4.0"}
COMMENT
curl http://localhost:22379/version
<<COMMENT
{"etcdserver":"3.4.0","etcdcluster":"3.4.0"}
COMMENT
curl http://localhost:32379/version
<<COMMENT
{"etcdserver":"3.4.0","etcdcluster":"3.4.0"}
COMMENT
```
[etcd-contact]: https://groups.google.com/forum/#!forum/etcd-dev

View File

@@ -1,6 +1,4 @@
---
title: Upgrade etcd from 3.4 to 3.5
---
## Upgrade etcd from 3.4 to 3.5
In the general case, upgrading from etcd 3.4 to 3.5 can be a zero-downtime, rolling upgrade:
- one by one, stop the etcd v3.4 processes and replace them with etcd v3.5 processes
@@ -12,7 +10,7 @@ Before [starting an upgrade](#upgrade-procedure), read through the rest of this
### Upgrade checklists
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/etcd-io/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
**NOTE:** When [migrating from v2 with no v3 data](https://github.com/coreos/etcd/issues/9480), etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 `ETCD_DATA_DIR/member/snap/db` file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. `db` file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.
Highlighted breaking changes in 3.5.
@@ -45,7 +43,7 @@ TODO(add more monitoring guides); v3.4 adds `etcd --logger=zap` support for stru
#### Deprecated in `etcd --log-output`
v3.4 renamed [`etcd --log-output` to `--log-outputs`](https://github.com/etcd-io/etcd/pull/9624) to support multiple log outputs.
v3.4 renamed [`etcd --log-output` to `--log-outputs`](https://github.com/coreos/etcd/pull/9624) to support multiple log outputs.
**`etcd --log-output` has been deprecated in v3.5.**

Some files were not shown because too many files have changed in this diff Show More