Previous change logs can be found at CHANGELOG-3.2.
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.
request "header:<ID:7587830746365689092 > put:<key:\"a\" value_size:14 >" took too long (59.798µ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.
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.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.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.