Previous change logs can be found at CHANGELOG-3.2.
The minimum recommended etcd versions to run in production are 3.1.11+, 3.2.26+, and 3.3.11+.
etcdctl endpoint health --write-out support.
etcdctl endpoint health --write-out json did not work.See code changes and v3.3 upgrade guide 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.
Verify function to perform corruption check on WAL contents.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
walgithub.com/ugorji/go/codec to github.com/json-iterator/go (See #10667 for more).github.com/ghodss/yaml to sigs.k8s.io/yaml (See #10718 for more).See code changes and v3.3 upgrade guide 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.
See code changes and v3.3 upgrade guide 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.
See code changes and v3.3 upgrade guide 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.
etcd --debug flag to see per-request debug information.snapshot status returns "snapshot file integrity check failed..." error.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_network_peer_round_trip_time_seconds Prometheus metric to track leader heartbeats.
etcd_snap_db_fsync_duration_seconds_count Prometheus metric.etcd_snap_db_save_total_duration_seconds_bucket Prometheus metric.etcd_network_snapshot_send_success Prometheus metric.etcd_network_snapshot_send_failures Prometheus metric.etcd_network_snapshot_send_total_duration_seconds Prometheus metric.etcd_network_snapshot_receive_success Prometheus metric.etcd_network_snapshot_receive_failures Prometheus metric.etcd_network_snapshot_receive_total_duration_seconds Prometheus metric.etcd_server_id Prometheus metric.etcd_server_health_success Prometheus metric.etcd_server_health_failures Prometheus metric.etcd_server_read_indexes_failed_total Prometheus metric.clientv3/concurrency package.See code changes and v3.3 upgrade guide 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.
See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_server_go_version Prometheus metric.etcd_server_heartbeat_send_failures_total Prometheus metric.etcd_server_slow_apply_total Prometheus metric.etcd_disk_backend_defrag_duration_seconds Prometheus metric.etcd_mvcc_hash_duration_seconds Prometheus metric.etcd_mvcc_hash_rev_duration_seconds Prometheus metric.etcd_server_slow_read_indexes_total Prometheus metric.etcd_server_quota_backend_bytes Prometheus metric.
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.etcd_mvcc_db_total_size_in_bytes Prometheus metric.
etcd_debugging_mvcc_db_total_size_in_bytes.etcd_mvcc_db_total_size_in_use_in_bytes Prometheus metric.
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.<-chan *clientv3LeaseKeepAliveResponse from clientv3.Lease.KeepAlive was never consumed or channel is full, client was sending keepalive request every 500ms instead of expected rate of every "TTL / 3" duration.See code changes and v3.3 upgrade guide 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.
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.See code changes and v3.3 upgrade guide 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.
etcd --cipher-suites flag.See code changes and v3.3 upgrade guide 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.
failed to initialize the etcd server: auth: invalid auth options error.mvcc server panic from restore operation.
See code changes and v3.3 upgrade guide 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.
etcdctl watch [key] [range_end] -- [exec-command…] parsing.
ETCDCTL_API=3 ./bin/etcdctl watch foo -- echo watch event received panicked.See code changes and v3.3 upgrade guide 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.
See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_server_is_leader Prometheus metric.etcd_debugging_server_lease_expired_total Prometheus metric.(*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.*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.(*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 --initial-election-tick-advance flag to configure initial election tick fast-forward.
etcd --initial-election-tick-advance=true, then local member fast-forwards election ticks to speed up "initial" leader election trigger.--initial-election-tick-advance=false.etcd --initial-election-tick-advance at the cost of slow initial bootstrap.embedembed.Config.InitialElectionTickAdvance to enable/disable initial election tick fast-forward.
embed.NewConfig() would return *embed.Config with InitialElectionTickAdvance as true by default.See code changes and v3.3 upgrade guide 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.
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).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.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.etcd --auto-compaction-mode=periodic --auto-compaction-retention=24h).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.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.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_network_peer_sent_failures_total count.See code changes and v3.3 upgrade guide 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.
curl -L http://localhost:2379/v3/election/proclaim -X POST -d '{"value":""}', curl -L http://localhost:2379/v3/election/resign -X POST -d '{"value":""}'.etcd --auto-compaction-mode revision --auto-compaction-retention 1 was translated to revision retention 3600000000000.etcd --auto-compaction-mode revision --auto-compaction-retention 1 is correctly parsed as revision retention 1.TTL values for Lease Grant.
TTL parameter to Grant request is unit of second.TTL values exceeding math.MaxInt64 expire in unexpected ways.rpctypes.ErrLeaseTTLTooLarge to client, when the requested TTL is larger than 9,000,000,000 seconds (which is >285 years).Lease is meant for short-periodic keepalives or sessions, in the range of seconds or minutes. Not for hours or days!raft.Config.CheckQuorum when starting with ForceNewCluster.See code changes and v3.3 upgrade guide 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.
etcdserver: read-only range request "key:\"\\000\" range_end:\"\\000\" " took too long [3.389041388s] to executemvcc "unsynced" watcher restore operation.
See code changes and v3.3 upgrade guide 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.
coreos/bbolt to replace boltdb/bolt.
clientv3 balancer failover under network faults/partitions.etcd --initial-cluster flag.
etcd --initial-advertise-peer-urls against corresponding etcd --initial-cluster URLs with forward-lookup.etcd --initial-advertise-peer-urls and etcd --initial-cluster do not match (e.g. due to DNS error), etcd will exit with errors.etcd --initial-cluster must include s1=https://s1.test:2380 given --initial-advertise-peer-urls=https://s1.test:2380.failed to resolve https://s1.test:2380 to match --initial-cluster=s1=https://s1.test:2380 (failed to resolve "https://s1.test:2380" (error ...)).google.golang.org/grpc v1.7.4 or v1.7.5.
metadata.Incoming/OutgoingContext.grpclog.Logger, upgrade to grpclog.LoggerV2.grpc.ErrClientConnTimeout errors in clientv3.MaxRecvMsgSize and MaxSendMsgSize to limit message size, in etcd server.Snapshot API.etcdctl lease timetolive LEASE_ID on expired lease now prints "lease LEASE_ID already expired".
"lease LEASE_ID granted with TTL(0s), remaining(-1s)"./v3alpha with /v3beta.
/v3alpha in v3.4.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.etcd --auto-compaction-retention flag to accept string values with finer granularity.
etcd --auto-compaction-retention accepts string values, etcd configuration YAML file auto-compaction-retention field must be changed to string type.--config-file etcd.config.yaml can have auto-compaction-retention: 24 field, now must be auto-compaction-retention: "24" or auto-compaction-retention: "24h".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 function in Go.boltdb/bolt from v1.3.0 to coreos/bbolt v1.3.1-coreos.6.google.golang.org/grpc from v1.2.1 to v1.7.5.github.com/ugorji/go/codec to v1.1, and regenerate v2 client.github.com/ugorji/go/codec to ugorji/go@54210f4e0, and regenerate v2 client.github.com/grpc-ecosystem/grpc-gateway from v1.2.2 to v1.3.0.golang.org/x/crypto/bcrypt to golang/crypto@6c586e17d.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd --listen-metrics-urls flag for additional /metrics and /health endpoints.
etcd_server_version Prometheus metric.
etcd-version-monitor.etcd_debugging_mvcc_db_compaction_keys_total Prometheus metric.etcd_debugging_server_lease_expired_total Prometheus metric.
etcd_debugging_mvcc_range_totaletcd_debugging_mvcc_put_totaletcd_debugging_mvcc_delete_totaletcd_debugging_mvcc_txn_totaletcd_debugging_mvcc_keys_total on restore.etcd_debugging_mvcc_db_total_size_in_bytes on restore.
prometheus.NewGaugeFunc.See security doc for more details.
SAN. 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.etcd --peer-cert-allowed-cn flag.
etcd --experimental-initial-corrupt-check flag to check cluster database hashes before serving client/peer traffic.
etcd --experimental-initial-corrupt-check=false by default.--initial-corrupt-check=true by default.etcd --experimental-corrupt-check-time flag to raise corrupt alarm monitoring.
etcd --experimental-corrupt-check-time=0s disabled by default.etcd --experimental-enable-v2v3 flag to emulate v2 API with v3.
etcd --experimental-enable-v2v3=false by default.etcd --max-txn-ops flag to configure maximum number operations in transaction.etcd --max-request-bytes flag to configure maximum client request size.
etcd --client-crl-file, --peer-crl-file flags for Certificate revocation list.etcd --peer-cert-allowed-cn flag to support CN-based auth for inter-peer connection.etcd --listen-metrics-urls flag for additional /metrics and /health endpoints.
/metrics endpoints for a TLS-enabled cluster.etcd --listen-metrics-urls=https://localhost:2378,http://localhost:9379 to serve /metrics and /health on secure port 2378 and insecure port 9379.etcd --auto-compaction-mode flag to support revision-based compaction.etcd --auto-compaction-retention flag to accept string values with finer granularity.
etcd --auto-compaction-retention accepts string values, etcd configuration YAML file auto-compaction-retention field must be changed to string type.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".--auto-compaction-mode periodic --auto-compaction-retention "24h", the time duration value for etcd --auto-compaction-retention flag must be valid for time.ParseDuration function in Go.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).etcd --auto-compaction-mode=periodic --auto-compaction-retention=72h automatically Compact with 72-hour retention windown, for every 7.2-hour.etcd --auto-compaction-mode=periodic --auto-compaction-retention=30m automatically Compact with 30-minute retention windown, for every 3-minute.etcd --auto-compaction-mode=periodic --auto-compaction-retention=10h).--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.etcd --grpc-keepalive-min-time, etcd --grpc-keepalive-interval, etcd --grpc-keepalive-timeout flags to configure server-side keepalive policies./health endpoint as unhealthy when alarm (e.g. NOSPACE) is raised or there's no leader.
etcdhttp.Health struct with JSON encoder."health" field is string type, not bool.{"health":"false"}, {"health":"true"}"errors" field 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).etcd --debug flag).lease package.etcd --advertise-client-urls=http://:2379.MaxCallSendMsgSize and MaxCallRecvMsgSize fields to clientv3.Config.
MaxCallSendMsgSize default value is 2 MiB, if not configured.MaxCallRecvMsgSize default value is math.MaxInt32, if not configured.Compare_LEASE in clientv3.Compare.LeaseValue helper to Cmp LeaseID values in Txn.MoveLeader to Maintenance.HashKV to Maintenance.Leases to Lease.clientv3/ordering for enforce ordering in serialized requests.WatchResponse.Canceled on compacted watch request.concurrency/stm Put with serializable snapshot.
etcdctl --discovery-srv flag.etcdctl --keepalive-time, --keepalive-timeout flags.etcdctl lease list command.etcdctl lease keep-alive --once flag.lease timetolive LEASE_ID on expired lease print lease LEASE_ID already expired.
lease LEASE_ID granted with TTL(0s), remaining(-1s).etcdctl snapshot restore --wal-dir flag.etcdctl defrag --data-dir flag.etcdctl move-leader command.etcdctl endpoint hashkv command.etcdctl endpoint --cluster flag, equivalent to v2 etcdctl cluster-health.etcdctl endpoint health command terminate with non-zero exit code on unhealthy status.etcdctl lock --ttl flag.etcdctl watch [key] [range_end] -- [exec-command…], equivalent to v2 etcdctl exec-watch.
etcdctl watch -- [exec-command] set environmental variables ETCD_WATCH_REVISION, ETCD_WATCH_EVENT_TYPE, ETCD_WATCH_KEY, ETCD_WATCH_VALUE for each event.etcdctl watch with environmental variables ETCDCTL_WATCH_KEY and ETCDCTL_WATCH_RANGE_END.clientv3.WithRequireLeader(context.Context) for watch command."del" instead of "delete" in txn interactive mode.ETCD_INITIAL_ADVERTISE_PEER_URLS in member add.etcdctl.etcdctl backup --with-v3 flag.grpc-proxy start --experimental-leasing-prefix flag.
grpc-proxy start --experimental-serializable-ordering flag.
grpc-proxy start --metrics-addr flag for an additional /metrics endpoint.
--metrics-addr=http://[HOST]:9379 to serve /metrics in insecure port 9379./health endpoint in grpc-proxy.grpc-proxy start --debug flag.grpc-proxy start --max-send-bytes flag to configure maximum client request size.grpc-proxy start --max-recv-bytes flag to configure maximum client request size.PrevKv flag handling.KeysOnly flag handling./v3alpha with /v3beta.
/v3alpha in v3.4.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.mvcc/backend.defragdb nil-pointer dereference on create bucket failure.grpc.Server panic on GracefulStop with TLS-enabled server.coreos/go-systemd to v15 (see https://github.com/coreos/go-systemd/releases/tag/v15)./v2/machines endpoint for python-etcd wrapper.raftLearner node does not vote or promote itself.v3.3.x is the last release cycle that supports ACI.
acbuild is not maintained anymore.*.aci files won't be available from etcd v3.4 release.gcr.io/etcd-development/etcd.
golang.org/x/net/context.