See code changes and v3.4 upgrade guide for any breaking changes.
etcd_network_client_grpc_sent_bytes_total.etcdserver: read-only range request "key:\"\\000\" range_end:\"\\000\" " took too long [3.389041388s] to executeLookup non-blocking with concurrent Grant/Revoke.acbuild is not maintained anymore.*.aci files are not available from v3.4 release.--advertise-client-urls=http://:2379.--initial-advertise-peer-urls=http://:2380.ETCD_NAME=abc etcd --name=def.ETCD_INITIAL_CLUSTER_TOKEN=abc etcd --initial-cluster-token=def.ETCDCTL_ENDPOINTS=abc.com ETCDCTL_API=3 etcdctl endpoint health --endpoints=def.com."github.com/coreos/etcd/snap" to "github.com/coreos/etcd/raftsnap"."github.com/coreos/etcd/etcdserver/auth" to "github.com/coreos/etcd/etcdserver/v2auth"."github.com/coreos/etcd/error" to "github.com/coreos/etcd/etcdserver/v2error"."github.com/coreos/etcd/store" to "github.com/coreos/etcd/etcdserver/v2store".etcdctl snapshot exit codes with snapshot package.
snapshot save/restore commands).glide to golang/dep.
vendor directory under cmd/vendor directory to prevent conflicting transitive dependencies.cmd/vendor directory to vendor at repository root.cmd directory.go get/install/build on etcd packages (e.g. clientv3, tools/benchmark) enforce builds with etcd vendor directory.etcd--discovery-srv-name flag to support custom DNS SRV name with discovery.
_etcd-server-ssl._tcp.[YOUR_HOST] and _etcd-server._tcp.[YOUR_HOST].--discovery-srv-name="foo", then query _etcd-server-ssl-foo._tcp.[YOUR_HOST] and _etcd-server-foo._tcp.[YOUR_HOST].embed.CompactorModePeriodic for compactor.ModePeriodic.embed.CompactorModeRevision for compactor.ModeRevision.--host-whitelist flag, etcdserver.Config.HostWhitelist, and embed.Config.HostWhitelist, to prevent "DNS Rebinding" attack.
"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)."HostWhitelist" is not empty, only allow HTTP requests whose Host field is listed in whitelist."HostWhitelist" is empty, which means insecure server allows all client HTTP requests."localhost", "127.0.0.1", etc.).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").ttl field for etcd Authentication JWT token.
etcd --auth-token jwt,pub-key=<pub key path>,priv-key=<priv key path>,sign-method=<sign method>,ttl=5m.etcdserver.ServerConfig.AuthToken.snapshot package for snapshot restore/save operations.watch_id field to etcdserverpb.WatchCreateRequest, allow user-provided watch ID to mvcc.
watch_id is returned via etcdserverpb.WatchResponse, if any.raftAppliedIndex field to etcdserverpb.StatusResponse for current Raft applied index.errors field to etcdserverpb.StatusResponse for server-side error.
"etcdserver: no leader", "NOSPACE", "CORRUPT"dbSizeInUse field to etcdserverpb.StatusResponse for actual DB size after compaction.etcdctlcheck datascale command.check datascale --auto-compact, --auto-defrag flags.check perf --auto-compact, --auto-defrag flags.defrag --cluster flag.endpoint status.endpoint status.etcd_debugging_mvcc_db_total_size_in_use_in_bytes Prometheus metric./v3.
/v3beta in v3.5.raftraft.ErrProposalDropped.
(r *raft) Step returns raft.ErrProposalDropped if a proposal has been ignored.becomeLeader and stepLeader by keeping track of latest pb.EntryConfChange index.
pendingConf boolean field scanning the entire tail of the log, which can delay hearbeat send.(n *node) ApplyConfChange.mvcc "unsynced" watcher restore operation.
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 (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.