Previous change logs can be found at CHANGELOG-3.5.
- Compile binaries using go 1.23.7.
- Bump golang.org/x/net to v0.36.0 to address CVE-2025-22870.
- Bump github.com/grpc-ecosystem/grpc-gateway/v2 to v2.26.3 to fix the issue of etcdserver crashing on receiving REST watch stream requests.
See code changes.
etcd
will no longer start on data dir created by newer versions (for example etcd v3.6 will not run on v3.7+ data dir). To downgrade data dir please check outetcdutl migrate
command.etcd
doesn't support serving client requests on the peer listen endpoints (--listen-peer-urls). See pull/13565.etcdctl
will sleep(2s) in case of range delete without--range
flag. See pull/13747- Applications which depend on etcd v3.6 packages must be built with go version >= v1.18.
- Deprecated V2 discovery.
- Deprecated SetKeepAlive and SetKeepAlivePeriod in limitListenerConn.
- Removed etcdctl defrag --data-dir.
- Removed etcdctl snapshot status.
- Removed etcdctl snapshot restore.
- Removed etcdutl snapshot save.
- Removed NewZapCoreLoggerBuilder in server/embed
- Add command to generate shell completion.
- When print endpoint status, show db size in use
- Always print the raft_term in decimal when displaying member list in json.
- Add one more field
storageVersion
into the response of commandetcdctl endpoint status
. - Add
--max-txn-ops
flag to make-mirror command. - Add
--consistency
flag to member list command. - Display field
hash_revision
foretcdctl endpoint hash
command. - Add
--max-request-bytes
and--max-recv-bytes
global flags.
- Add command to generate shell completion.
- Add
migrate
command for downgrading/upgrading etcd data dir files. - Add optional --bump-revision and --mark-compacted flag to etcdutl snapshot restore operation.
- Add hashkv command to print hash of keys and values up to given revision
- Removed legacy etcdutl backup
- Count the number of keys from users perspective
- Package
mvcc
was moved tostorage/mvcc
- Package
mvcc/backend
was moved tostorage/backend
- Package
mvcc/buckets
was moved tostorage/schema
- Package
wal
was moved tostorage/wal
- Package
datadir
was moved tostorage/datadir
- Decouple raft from etcd. Migrated raft to a separate repository, and renamed raft module to
go.etcd.io/raft/v3
.
- Add
etcd --log-format
flag to support log format. - Add
etcd --experimental-max-learners
flag to allow configuration of learner max membership. - Add
etcd --experimental-enable-lease-checkpoint-persist
flag to handle upgrade from v3.5.2 clusters with this feature enabled. - Add
etcdctl make-mirror --rev
flag to support incremental mirror. - Add v3 discovery to bootstrap a new etcd cluster.
- Add field
storage
into the response body of endpoint/version
. - Add
etcd --max-concurrent-streams
flag to configure the max concurrent streams each client can open at a time, and defaults to math.MaxUint32. - Add
etcd grpc-proxy --experimental-enable-grpc-logging
flag to logging all grpc requests and responses. - Add
etcd --experimental-compact-hash-check-enabled --experimental-compact-hash-check-time
flags to support enabling reliable corruption detection on compacted revisions. - Add Protection on maintenance request when auth is enabled.
- Graduated
--experimental-warning-unary-request-duration
to--warning-unary-request-duration
. Note the experimental flag is deprecated and will be decommissioned in v3.7. - Add field
hash_revision
intoHashKVResponse
. - Add
etcd --experimental-snapshot-catch-up-entries
flag to configure number of entries for a slow follower to catch up after compacting the raft storage entries and defaults to 5k. - Decreased
--snapshot-count
default value from 100,000 to 10,000 - Add
etcd --tls-min-version --tls-max-version
to enable support for TLS 1.3. - Add quota to endpoint status response
- Add feature gate
SetMemberLocalAddr
to enable using the first specified and non-loopback local address from initial-advertise-peer-urls as the local address when communicating with a peer - Add Support multiple values for allowed client and peer TLS identities
- Add
embed.Config.GRPCAdditionalServerOptions
to support updating the default internal gRPC configuration for embedded use cases.
- Add
etcd grpc-proxy start --endpoints-auto-sync-interval
flag to enable and configure interval of auto sync of endpoints with server. - Add
etcd grpc-proxy start --listen-cipher-suites
flag to support adding configurable cipher list. - Add
tls min/max version to grpc proxy
to support setting TLS min and max version.
See List of metrics for all metrics per release.
- Add
etcd_disk_defrag_inflight
. - Add
etcd_debugging_server_alarms
. - Add
etcd_server_range_duration_seconds
.
- Require Go 1.23+.
- Compile with Go 1.23+. Please refer to gc-guide to configure
GOGC
andGOMEMLIMIT
properly.
- Use Distroless as base image to make the image less vulnerable and reduce image size.
- Upgrade grpc-gateway from v1 to v2.
- Switch from grpc-ecosystem/go-grpc-prometheus to grpc-ecosystem/go-grpc-middleware/providers/prometheus.