2018-04-12 21:46:43 +03:00
2018-08-30 00:28:43 +03:00
Previous change logs can be found at [CHANGELOG-3.4 ](https://github.com/etcd-io/etcd/blob/master/CHANGELOG-3.4.md ).
2018-04-12 21:46:43 +03:00
2020-01-15 21:05:54 +03:00
The minimum recommended etcd versions to run in **production** are 3.2.28+, 3.3.18+, and 3.4.2+.
2019-09-06 23:22:42 +03:00
2018-10-25 01:54:44 +03:00
< hr >
2018-04-26 21:34:55 +03:00
2019-09-06 23:22:42 +03:00
## v3.5.0 (2020 TBD)
2018-04-26 21:34:55 +03:00
2019-08-02 01:26:31 +03:00
See [code changes ](https://github.com/etcd-io/etcd/compare/v3.4.0...v3.5.0 ) and [v3.5 upgrade guide ](https://github.com/etcd-io/etcd/blob/master/Documentation/upgrades/upgrade_3_5.md ) for any breaking changes.
2019-09-06 23:22:42 +03:00
- [v3.5.0 ](https://github.com/etcd-io/etcd/releases/tag/v3.5.0 ) (2020 TBD), see [code changes ](https://github.com/etcd-io/etcd/compare/v3.5.0-rc.1...v3.5.0 ).
- [v3.5.0-rc.1 ](https://github.com/etcd-io/etcd/releases/tag/v3.5.0-rc.1 ) (2020 TBD), see [code changes ](https://github.com/etcd-io/etcd/compare/v3.5.0-rc.0...v3.5.0-rc.1 ).
- [v3.5.0-rc.0 ](https://github.com/etcd-io/etcd/releases/tag/v3.5.0-rc.0 ) (2020 TBD), see [code changes ](https://github.com/etcd-io/etcd/compare/v3.4.0...v3.5.0-rc.0 ).
2019-08-02 01:26:31 +03:00
**Again, before running upgrades from any previous release, please make sure to read change logs below and [v3.5 upgrade guide ](https://github.com/etcd-io/etcd/blob/master/Documentation/upgrades/upgrade_3_5.md ).**
2018-04-12 21:46:43 +03:00
### Breaking Changes
2020-04-29 01:02:19 +03:00
- `go.etcd.io/etcd` Go packages have moved to `go.etcd.io/etcd/v3` to follow the [Go modules ](https://github.com/golang/go/wiki/Modules ) conventions
2020-02-19 10:36:55 +03:00
- Changed behavior of clienv3 API [MemberList ](https://github.com/etcd-io/etcd/pull/11639 ).
- Previously, it is directly served with server's local data, which could be stale.
- Now, it is served with linearizable guarantee. If the server is disconnected from quorum, `MemberList` call will fail.
2018-04-12 21:46:43 +03:00
- [gRPC gateway ](https://github.com/grpc-ecosystem/grpc-gateway ) only supports [`/v3` ](TODO ) endpoint.
2018-08-30 00:28:43 +03:00
- Deprecated [`/v3beta` ](https://github.com/etcd-io/etcd/pull/9298 ).
2018-04-20 20:33:03 +03:00
- `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.
2019-07-23 23:05:58 +03:00
- **`etcd --experimental-enable-v2v3` flag has been deprecated.** Use ** `etcd --enable-v2v3` ** instead.
- Change [`etcd --experimental-enable-v2v3` ](TODO ) flag to `etcd --enable-v2v3` ; v2 storage emulation is now stable.
2019-10-22 10:42:40 +03:00
- **`etcd --experimental-backend-bbolt-freelist-type` flag has been deprecated.** Use ** `etcd --backend-bbolt-freelist-type` ** instead. The default type is hashmap and it is stable now.
2019-07-30 02:07:00 +03:00
- **`etcd --debug` flag has been deprecated.** Use ** `etcd --log-level=debug` ** instead.
- Remove [`embed.Config.Debug` ](https://github.com/etcd-io/etcd/pull/10947 ).
2018-05-02 19:51:00 +03:00
- **`etcd --log-output` flag has been deprecated.** Use ** `etcd --log-outputs` ** instead.
2018-05-17 12:20:55 +03:00
- **`etcd --logger=zap --log-outputs=stderr`** is now the default.
2019-07-30 02:07:00 +03:00
- **`etcd --logger=capnslog` flag value has been deprecated.**
2018-05-17 01:03:18 +03:00
- **`etcd --logger=zap --log-outputs=default` flag value is not supported.**.
2019-08-02 01:26:31 +03:00
- Use `etcd --logger=zap --log-outputs=stderr` .
2018-05-17 12:20:55 +03:00
- Or, use `etcd --logger=zap --log-outputs=systemd/journal` to send logs to the local systemd journal.
2018-05-17 03:11:37 +03:00
- 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.
2018-08-30 00:28:43 +03:00
- 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/etcd-io/etcd/pull/9729 ) and fall back to `os.Stderr` , which is inefficient.
2018-05-17 01:03:18 +03:00
- To avoid this problem, systemd journal logging must be configured manually.
- **`etcd --log-outputs=stderr`** is now the default.
2018-05-17 12:20:55 +03:00
- **`etcd --log-package-levels` flag for `capnslog` has been deprecated.** Now, ** `etcd --logger=zap --log-outputs=stderr` ** is the default.
2018-05-02 19:51:00 +03:00
- **`[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.
2018-05-17 12:20:55 +03:00
- Please use `etcd --logger=zap --log-outputs=stderr` instead.
2019-08-02 01:26:31 +03:00
- Deprecated `etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metric. Use `etcd_mvcc_db_total_size_in_bytes` instead.
- Deprecated `etcd_debugging_mvcc_put_total` Prometheus metric. Use `etcd_mvcc_put_total` instead.
- Deprecated `etcd_debugging_mvcc_delete_total` Prometheus metric. Use `etcd_mvcc_delete_total` instead.
- Deprecated `etcd_debugging_mvcc_txn_total` Prometheus metric. Use `etcd_mvcc_txn_total` instead.
- Deprecated `etcd_debugging_mvcc_range_total` Prometheus metric. Use `etcd_mvcc_range_total` instead.
2019-08-01 23:53:12 +03:00
- Master branch `/version` outputs `3.5.0-pre` , instead of `3.4.0+git` .
2020-02-12 21:30:09 +03:00
- Changed `proxy` package function signature to [support structured logger ](https://github.com/etcd-io/etcd/pull/11614 ).
- Previously, `NewClusterProxy(c *clientv3.Client, advaddr string, prefix string) (pb.ClusterServer, <-chan struct{})` , now `NewClusterProxy(lg *zap.Logger, c *clientv3.Client, advaddr string, prefix string) (pb.ClusterServer, <-chan struct{})` .
- Previously, `Register(c *clientv3.Client, prefix string, addr string, ttl int)` , now `Register(lg *zap.Logger, c *clientv3.Client, prefix string, addr string, ttl int) <-chan struct{}` .
- Previously, `NewHandler(t *http.Transport, urlsFunc GetProxyURLs, failureWait time.Duration, refreshInterval time.Duration) http.Handler` , now `NewHandler(lg *zap.Logger, t *http.Transport, urlsFunc GetProxyURLs, failureWait time.Duration, refreshInterval time.Duration) http.Handler` .
2020-02-12 22:15:41 +03:00
- Changed `pkg/flags` function signature to [support structured logger ](https://github.com/etcd-io/etcd/pull/11616 ).
- Previously, `SetFlagsFromEnv(prefix string, fs *flag.FlagSet) error` , now `SetFlagsFromEnv(lg *zap.Logger, prefix string, fs *flag.FlagSet) error` .
- Previously, `SetPflagsFromEnv(prefix string, fs *pflag.FlagSet) error` , now `SetPflagsFromEnv(lg *zap.Logger, prefix string, fs *pflag.FlagSet) error` .
2018-06-07 22:06:09 +03:00
2020-05-12 04:07:39 +03:00
### Security
- Add [`TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256` and `TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256` to `etcd --cipher-suites` ](https://github.com/etcd-io/etcd/pull/11864 ).
2018-06-07 22:06:09 +03:00
### Metrics, Monitoring
2019-08-08 19:20:16 +03:00
See [List of metrics ](https://github.com/etcd-io/etcd/tree/master/Documentation/metrics ) for all metrics per release.
2018-07-03 23:18:44 +03:00
Note that any `etcd_debugging_*` metrics are experimental and subject to change.
2019-08-02 01:26:31 +03:00
- Deprecated `etcd_debugging_mvcc_db_total_size_in_bytes` Prometheus metric. Use `etcd_mvcc_db_total_size_in_bytes` instead.
- Deprecated `etcd_debugging_mvcc_put_total` Prometheus metric. Use `etcd_mvcc_put_total` instead.
- Deprecated `etcd_debugging_mvcc_delete_total` Prometheus metric. Use `etcd_mvcc_delete_total` instead.
- Deprecated `etcd_debugging_mvcc_txn_total` Prometheus metric. Use `etcd_mvcc_txn_total` instead.
- Deprecated `etcd_debugging_mvcc_range_total` Prometheus metric. Use `etcd_mvcc_range_total` instead.
2019-09-06 02:45:11 +03:00
- Add [`etcd_debugging_mvcc_current_revision` ](https://github.com/etcd-io/etcd/pull/11126 ) Prometheus metric.
- Add [`etcd_debugging_mvcc_compact_revision` ](https://github.com/etcd-io/etcd/pull/11126 ) Prometheus metric.
2019-10-15 22:27:42 +03:00
- Change [`etcd_cluster_version` ](https://github.com/etcd-io/etcd/pull/11254 ) Prometheus metrics to include only major and minor version.
2019-11-27 01:16:37 +03:00
- Add [`etcd_debugging_mvcc_total_put_size_in_bytes` ](https://github.com/etcd-io/etcd/pull/11374 ) Prometheus metric.
2020-03-19 01:28:05 +03:00
- Add [`etcd_server_client_requests_total` with `"type"` and `"client_api_version"` labels ](https://github.com/etcd-io/etcd/pull/11687 ).
2020-04-01 06:34:16 +03:00
- Add [`etcd_wal_write_bytes_total` ](https://github.com/etcd-io/etcd/pull/11738 ).
2020-04-05 14:27:13 +03:00
- Add [`etcd_debugging_auth_revision` ](https://github.com/etcd-io/etcd/commit/f14d2a087f7b0fd6f7980b95b5e0b945109c95f3 ).
2018-04-12 21:46:43 +03:00
2019-07-25 19:29:31 +03:00
### etcd server
- [`etcd --enable-v2v3` ](TODO ) flag is now stable.
- `etcd --experimental-enable-v2v3` has been deprecated.
- Added [more v2v3 integration tests ](https://github.com/etcd-io/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?
2020-05-12 04:07:39 +03:00
- Add [`TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256` and `TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256` to `etcd --cipher-suites` ](https://github.com/etcd-io/etcd/pull/11864 ).
2019-07-25 19:29:31 +03:00
- Automatically [create parent directory if it does not exist ](https://github.com/etcd-io/etcd/pull/9626 ) (fix [issue#9609 ](https://github.com/etcd-io/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** .
2019-10-22 10:42:40 +03:00
- [`etcd --backend-bbolt-freelist-type`] flag is now stable.
- `etcd --experimental-backend-bbolt-freelist-type` has been deprecated.
2019-09-06 23:22:42 +03:00
- Support [rollback/downgrade ](TODO ).
2019-12-11 22:43:04 +03:00
- Deprecate v2 apply on cluster version. [Use v3 request to set cluster version and recover cluster version from v3 backend ](https://github.com/etcd-io/etcd/pull/11427 ).
2020-02-12 21:12:48 +03:00
- [Fix corruption bug in defrag ](https://github.com/etcd-io/etcd/pull/11613 ).
2020-02-22 10:20:07 +03:00
- Fix [quorum protection logic when promoting a learner ](https://github.com/etcd-io/etcd/pull/11640 ).
2020-03-02 21:11:13 +03:00
- Improve [peer corruption checker ](https://github.com/etcd-io/etcd/pull/11621 ) to work when peer mTLS is enabled.
2020-03-19 01:28:05 +03:00
- Log [`[CLIENT-PORT]/health` check in server side](https://github.com/etcd-io/etcd/pull/11704).
2020-04-01 22:05:00 +03:00
- Improve [compaction performance when latest index is greater than 1-million ](https://github.com/etcd-io/etcd/pull/11734 ).
2020-04-05 14:27:13 +03:00
- [Refactor consistentindex ](https://github.com/etcd-io/etcd/pull/11699 ).
- [Add log when etcdserver failed to apply command ](https://github.com/etcd-io/etcd/pull/11670 ).
2020-04-10 14:30:32 +03:00
- Improve [count-only range performance ](https://github.com/etcd-io/etcd/pull/11771 ).
2020-04-11 19:35:12 +03:00
- Remove [redundant storage restore operation to shorten the startup time ](https://github.com/etcd-io/etcd/pull/11779 ).
- With 40 million key test data,it can shorten the startup time from 5 min to 2.5 min.
2020-04-26 16:10:30 +03:00
- [Fix deadlock bug in mvcc ](https://github.com/etcd-io/etcd/pull/11817 ).
2019-07-25 19:29:31 +03:00
2019-07-30 02:07:00 +03:00
### Package `embed`
- Remove [`embed.Config.Debug` ](https://github.com/etcd-io/etcd/pull/10947 ).
- Use `embed.Config.LogLevel` instead.
2019-09-13 22:51:46 +03:00
- Add [`embed.Config.ZapLoggerBuilder` ](https://github.com/etcd-io/etcd/pull/11147 ) to allow creating a custom zap logger.
2019-07-30 02:07:00 +03:00
2019-09-13 00:34:26 +03:00
### Package `clientv3`
- Add [TryLock ](https://github.com/etcd-io/etcd/pull/11104 ) method to `clientv3/concurrency/Mutex` . A non-blocking method on `Mutex` which does not wait to get lock on the Mutex, returns immediately if Mutex is locked by another session.
2019-12-02 20:54:51 +03:00
- Fix [client balancer failover against multiple endpoints ](https://github.com/etcd-io/etcd/pull/11184 ).
- Fix ["kube-apiserver: failover on multi-member etcd cluster fails certificate check on DNS mismatch" (kubernetes#83028) ](https://github.com/kubernetes/kubernetes/issues/83028 ).
- Fix [IPv6 endpoint parsing in client ](https://github.com/etcd-io/etcd/pull/11211 ).
- Fix ["1.16: etcd client does not parse IPv6 addresses correctly when members are joining" (kubernetes#83550) ](https://github.com/kubernetes/kubernetes/issues/83550 ).
2020-02-19 12:19:17 +03:00
- Fix [errors caused by grpc changing balancer/resolver API ](https://github.com/etcd-io/etcd/pull/11564 ). This change is compatible with grpc >= [v1.26.0 ](https://github.com/grpc/grpc-go/releases/tag/v1.26.0 ), but is not compatible with < v1.26.0 version .
2020-02-04 00:21:35 +03:00
- Use [ServerName as the authority ](https://github.com/etcd-io/etcd/pull/11574 ) after bumping to grpc v1.26.0. Remove workaround in [#11184 ](https://github.com/etcd-io/etcd/pull/11184 ).
2020-03-19 01:28:05 +03:00
- Fix [`"hasleader"` metadata embedding ](https://github.com/etcd-io/etcd/pull/11687 ).
- Previously, `clientv3.WithRequireLeader(ctx)` was overwriting existing context keys.
2020-05-11 12:26:41 +03:00
- Fix [watch leak caused by lazy cancellation ](https://github.com/etcd-io/etcd/pull/11850 ). When clients cancel their watches, a cancel request will now be immediately sent to the server instead of waiting for the next watch event.
2019-09-13 00:34:26 +03:00
2020-03-29 22:38:04 +03:00
### Package `lease`
- Fix [memory leak in follower nodes ](https://github.com/etcd-io/etcd/pull/11731 ).
- https://github.com/etcd-io/etcd/issues/11495
- https://github.com/etcd-io/etcd/issues/11730
2020-04-01 06:34:16 +03:00
### Package `wal`
- Add [`etcd_wal_write_bytes_total` ](https://github.com/etcd-io/etcd/pull/11738 ).
2020-04-16 23:31:19 +03:00
- Handle [out-of-range slice bound in `ReadAll` and entry limit in `decodeRecord` ](https://github.com/etcd-io/etcd/pull/11793 ).
2020-04-01 06:34:16 +03:00
2019-10-04 00:00:22 +03:00
### etcdctl v3
2020-02-29 18:33:55 +03:00
- Fix `etcdctl member add` command to prevent potential timeout. ([PR#11194](https://github.com/etcd-io/etcd/pull/11194) and [PR#11638 ](https://github.com/etcd-io/etcd/pull/11638 ))
2020-01-14 12:20:36 +03:00
- Add [`etcdctl watch --progress-notify` ](https://github.com/etcd-io/etcd/pull/11462 ) flag.
2020-02-06 06:27:42 +03:00
- Add [`etcdctl auth status` ](https://github.com/etcd-io/etcd/pull/11536 ) command to check if authentication is enabled
2020-04-06 11:55:55 +03:00
- Add [`etcdctl get --count-only` ](https://github.com/etcd-io/etcd/pull/11743 ) flag for output type `fields` .
2020-05-11 10:11:40 +03:00
- Add [`etcdctl member list -w=json --hex` ](https://github.com/etcd-io/etcd/pull/11812 ) flag to print memberListResponse in hex format json.
2019-09-13 00:34:26 +03:00
2018-04-25 21:15:43 +03:00
### gRPC gateway
2018-04-12 21:46:43 +03:00
- [gRPC gateway ](https://github.com/grpc-ecosystem/grpc-gateway ) only supports [`/v3` ](TODO ) endpoint.
2018-08-30 00:28:43 +03:00
- Deprecated [`/v3beta` ](https://github.com/etcd-io/etcd/pull/9298 ).
2018-04-20 20:33:03 +03:00
- `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.
2018-10-25 01:54:44 +03:00
2020-03-15 14:31:03 +03:00
### gRPC Proxy
- Fix [`panic on error` ](https://github.com/etcd-io/etcd/pull/11694 ) for metrics handler.
2020-04-16 10:00:58 +03:00
- Add [gRPC keepalive related flags ](https://github.com/etcd-io/etcd/pull/11711 ) `grpc-keepalive-min-time` , `grpc-keepalive-interval` and `grpc-keepalive-timeout` .
2020-03-15 14:31:03 +03:00
2019-12-12 03:09:20 +03:00
### Auth
- Fix [NoPassword check when adding user through GRPC gateway ](https://github.com/etcd-io/etcd/pull/11418 ) ([issue#11414](https://github.com/etcd-io/etcd/issues/11414))
2020-02-04 19:12:43 +03:00
- Fix bug where [some auth related messages are logged at wrong level ](https://github.com/etcd-io/etcd/pull/11586 )
2020-04-05 14:27:13 +03:00
- [Fix a data corruption bug by saving consistent index ](https://github.com/etcd-io/etcd/pull/11652 ).
- [Improve checkPassword performance ](https://github.com/etcd-io/etcd/pull/11735 ).
- [Add authRevision field in AuthStatus ](https://github.com/etcd-io/etcd/pull/11659 ).
2019-12-12 03:09:20 +03:00
2020-02-06 06:27:42 +03:00
### API
2020-03-19 01:28:05 +03:00
2020-02-06 06:27:42 +03:00
- Add [`/v3/auth/status` ](https://github.com/etcd-io/etcd/pull/11536 ) endpoint to check if authentication is enabled
2020-02-19 10:36:55 +03:00
- [Add `Linearizable` field to `etcdserverpb.MemberListRequest` ](https://github.com/etcd-io/etcd/pull/11639 ).
2020-02-06 06:27:42 +03:00
2019-09-12 00:56:18 +03:00
### Dependency
2020-01-16 04:45:52 +03:00
- Upgrade [`google.golang.org/grpc` ](https://github.com/grpc/grpc-go/releases ) from [**`v1.23.0`** ](https://github.com/grpc/grpc-go/releases/tag/v1.23.0 ) to [**`v1.26.0`** ](https://github.com/grpc/grpc-go/releases/tag/v1.26.0 ).
2019-09-12 00:56:18 +03:00
2020-04-13 17:53:18 +03:00
### Release
- Add s390x build support ([PR#11548](https://github.com/etcd-io/etcd/pull/11548) and [PR#11358 ](https://github.com/etcd-io/etcd/pull/11358 ))
2019-09-06 23:06:42 +03:00
### Go
2020-05-12 04:07:39 +03:00
- Require [*Go 1.14+* ](https://github.com/etcd-io/etcd/pull/11110 ).
- Compile with [*Go 1.14* ](https://golang.org/doc/devel/release.html#go1.14 )
2019-09-06 23:22:42 +03:00
2019-09-30 20:26:51 +03:00
### Project Governance
- The etcd team has added, a well defined and openly discussed, project [governance ](https://github.com/etcd-io/etcd/pull/11175 ).
2018-10-25 01:54:44 +03:00
2020-03-19 01:28:05 +03:00
2018-10-25 01:54:44 +03:00
< hr >