Skip to content

Latest commit

 

History

History
237 lines (183 loc) · 19 KB

CHANGELOG-3.5.md

File metadata and controls

237 lines (183 loc) · 19 KB

Previous change logs can be found at CHANGELOG-3.4.

The minimum recommended etcd versions to run in production are 3.2.28+, 3.3.18+, and 3.4.2+.


v3.5.0 (2020 TBD)

See code changes and v3.5 upgrade guide 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.

Breaking Changes

  • go.etcd.io/etcd Go packages have moved to go.etcd.io/etcd/v3 to follow the Go modules conventions
  • Changed behavior of clienv3 API MemberList.
    • 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.
  • gRPC gateway only supports /v3 endpoint.
    • Deprecated /v3beta.
    • 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 --experimental-enable-v2v3 flag has been deprecated. Use etcd --enable-v2v3 instead.
  • 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.
  • etcd --debug flag has been deprecated. Use etcd --log-level=debug instead.
  • Remove embed.Config.Debug.
  • 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 value has been deprecated.
  • etcd --logger=zap --log-outputs=default flag value is not supported..
    • 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 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. 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.
  • Master branch /version outputs 3.5.0-pre, instead of 3.4.0+git.
  • Changed proxy package function signature to support structured logger.
    • 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.
  • Changed pkg/flags function signature to support structured logger.
    • 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.
  • Changed behavior on existing dir permission.
    • Previously, the permission was not checked on existing data directory and the directory used for automatically generating self-signed certificates for TLS connections with clients. Now a check is added to make sure those directories, if already exist, has a desired permission of 700 on Linux and 777 on Windows.

etcdctl

Security

Metrics, Monitoring

See List of metrics for all metrics per release.

Note that any etcd_debugging_* metrics are experimental and subject to change.

etcd server

Package runtime

Package embed

Package clientv3

Package lease

Package wal

etcdctl v3

gRPC gateway

  • gRPC gateway only supports /v3 endpoint.
    • Deprecated /v3beta.
    • 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.

gRPC Proxy

Auth

API

Dependency

Release

Go

Project Governance

  • The etcd team has added, a well defined and openly discussed, project governance.