What etcd-io/etcd shipped
Written by FoxPlug from the repository's own releases; not affiliated with Etcd. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/etcd-io/etcd; Etcd did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Etcdserver now prevents the adjusted commit-index from exceeding the last index on force-new-cluster, fixing the case where the backend
consistent_indexcan be ahead of the last WAL entry after an unexpected crash. Pull request #22655 - The force-new-cluster commit-index fix was backported to release-3.5. Pull request #22688
- The force-new-cluster commit-index fix was backported to release-3.6. Pull request #22686
- The force-new-cluster commit-index fix was backported to release-3.7. Pull request #22685
- Changelog entries for the force-new-cluster commit-index fix were added for v3.5.36, v3.6.17 and v3.7.4. Pull request #22689
- AlarmStore is now defined as an atomic.Pointer to avoid a race condition. Pull request #22699
- The alarmStore atomic.Pointer change was backported to release-3.5. Pull request #22707
- The alarmStore atomic.Pointer change was backported to release-3.6. Pull request #22706
- The alarmStore atomic.Pointer change was cherry-picked to release-3.7. Pull request #22705
- The changelog was updated to cover the alarmStore race issue. Pull request #22708
Why it matters
Two correctness fixes landed this week and were carried across the 3.5, 3.6 and 3.7 release branches: the alarmStore race and the force-new-cluster commit-index overshoot. For people running etcd, that means the fixes are available on the release lines they already use, and changelog entries were added so the changes are documented for upcoming patch releases.
Changelog entry
- Etcdserver: prevent the adjusted commit-index from exceeding the last index on force-new-cluster. Pull request #22655
- Release 3.5: backport of the force-new-cluster commit-index fix. Pull request #22688
- Release 3.6: backport of the force-new-cluster commit-index fix. Pull request #22686
- Release 3.7: backport of the force-new-cluster commit-index fix. Pull request #22685
- Changelog: add force-new-cluster commit-index fix entries for v3.5.36, v3.6.17 and v3.7.4. Pull request #22689
- Define alarmStore as an atomic.Pointer to avoid a race condition. Pull request #22699
- Release 3.5: define alarmStore as an atomic.Pointer to avoid a race condition. Pull request #22707
- Release 3.6: define alarmStore as an atomic.Pointer to avoid a race condition. Pull request #22706
- Release 3.7: define alarmStore as an atomic.Pointer to avoid a race condition. Pull request #22705
- Changelog: cover the alarmStore race issue. Pull request #22708
- Storage/mvcc: expand index Put benchmarks with fixed key spaces and different workloads. Pull request #22682
- Add etcd and Kubernetes version matrix. Pull request #22676
This week: force-new-cluster no longer lets the adjusted commit-index exceed the last index, backported to 3.5, 3.6 and 3.7. alarmStore is now an atomic.Pointer to remove a race, also backported across all three release lines. Changelog entries added for both.
This week in etcd: force-new-cluster now prevents the adjusted commit-index from exceeding the last index. This matters after an unexpected crash, when the backend consistent_index can be ahead of the last WAL entry. The fix is backported to release-3.5, release-3.6 and release-3.7, with changelog entries added for v3.5.36, v3.6.17 and v3.7.4. alarmStore is now defined as an atomic.Pointer to avoid a race condition, and that change is backported across 3.5, 3.6 and 3.7 as well. The changelog was updated to cover the race issue.
Week of October 26, 2026
What shipped
- The 3.5 branch now keeps the auth permission checking step in the request chain when the NOSPACE alarm is raised, so a full database no longer drops permission checks. Pull request #22386
- The 3.5 branch now handles a leader that removed itself without reading a stale read index. Pull request #22652
- The Dockerfile base image moved to distroless static-debian13 because the debian 11 and 12 distroless images still trust the compromised eMudhra intermediate CAs and have no patched release. Pull request #22670
- The same base image move to distroless static-debian13 landed on release-3.5. Pull request #22667
- The same base image move to distroless static-debian13 landed on release-3.7. Pull request #22669
- The same base image move to distroless static-debian13 landed on release-3.6. Pull request #22668
Why it matters
This week the 3.5 release line received two correctness fixes: permission checks are no longer lost when a full database raises the NOSPACE alarm, and a leader that removed itself no longer serves a stale read index. Separately, the container base image was moved to distroless static-debian13 on the main and 3.5, 3.6 and 3.7 branches because older distroless images still trust compromised intermediate CAs with no patched release available.
Changelog entry
- Release-3.5: keep the auth applier in the applier chain when the NOSPACE alarm is raised. Pull request #22386
- Release-3.5: fix a stale read index at a leader that removed itself. Pull request #22652
- Dockerfile: bump base image to distroless static-debian13 because older distroless images trust compromised eMudhra intermediate CAs. Pull request #22670
- Release-3.5: bump Dockerfile base image to distroless static-debian13. Pull request #22667
- Release-3.7: bump Dockerfile base image to distroless static-debian13. Pull request #22669
- Release-3.6: bump Dockerfile base image to distroless static-debian13. Pull request #22668
This week: on release-3.5 the auth applier stays in the chain when the NOSPACE alarm fires, and a leader that removed itself no longer reads a stale index. The container base image moved to distroless static-debian13 on main and 3.5, 3.6 and 3.7: older distroless images trust com
This week in etcd: release-3.5 received two fixes. When the database becomes full and the NOSPACE alarm is raised, the request chain is rebuilt without the auth applier, which checks permissions; the applier is now kept. A leader that removed itself no longer uses a stale read index. On the packaging side, the Dockerfile base image moved to distroless static-debian13, backported to 3.5, 3.6 and 3.7, because the debian 11 and 12 distroless images still trust the compromised eMudhra intermediate CAs and have no patched release.
Week of October 19, 2026
What shipped
- Released etcd v3.7.3, with the CHANGELOG and upgrade guide updated for the release. Release
- Released etcd v3.6.16, with the CHANGELOG and upgrade guide updated for the release. Release
- Released etcd v3.5.35, with the CHANGELOG and upgrade guide updated for the release. Release
- Fixed a data race in mvcc between Hash and Restore, where hash read the backend and current revision without the locks Restore and write transactions hold. Pull request #22609
- Backported the mvcc Hash and Restore data race fix to release-3.7. Pull request #22636
- Backported the mvcc Hash and Restore data race fix to release-3.5. Pull request #22640
- Reverted github.com/creack/pty to v1.1.18 in pkg and tests, where the newer version coincided with e2e CI failures running etcdctl. Pull request #22627
- Updated the build to Go 1.27.3, which contains a fix for CVE-2026-111943. Pull request #22629
- Updated the release-3.7 build to Go 1.26.10, which contains a fix for CVE-2026-111943. Pull request #22630
- Added a session option to set a timeout for session creation, so creating a session no longer hangs without errors when no nodes can be contacted. Pull request #16385
Why it matters
This week brings three patch releases on the 3.5, 3.6 and 3.7 lines, each with CHANGELOG and upgrade guidance for users moving up. Two concurrency fixes land in mvcc, one on main and backported to 3.6 and 3.5, and the build moves to Go versions carrying a CVE fix. A pty revert and a new session timeout option also reduce friction for people running tests and writing clients.
Changelog entry
- Release v3.7.3. Release
- Release v3.6.16. Release
- Release v3.5.35. Release
- Mvcc: fix data race between Hash and Restore. Pull request #22609
- Mvcc: fix data race between Hash and Restore on release-3.7. Pull request #22636
- Mvcc: fix data race between Hash and Restore on release-3.5. Pull request #22640
- Client: add session option to set timeout for session creation. Pull request #16385
- Build with Go 1.27.3. Pull request #22629
- Build with Go 1.26.10 on release-3.7. Pull request #22630
- Build with Go 1.26.10 on release-3.6. Pull request #22631
- Build with Go 1.26.10 on release-3.5. Pull request #22632
- Revert github.com/creack/pty to v1.1.18 in pkg and tests. Pull request #22627
Etcd patch releases are out: v3.7.3, v3.6.16 and v3.5.35, each with updated CHANGELOG and upgrade guide. This week also fixes a data race in mvcc and moves the build to Go patch releases with a CVE fix.
Etcd v3.7.3, v3.6.16 and v3.5.35 are released this week, each with an updated CHANGELOG and upgrade guide, so check those before upgrading. The mvcc store had a data race between Hash and Restore, where the hash path read the backend and current revision without the locks the restore path holds; that is fixed on main and backported to 3.6 and 3.5. The build now uses Go patch releases that contain a CVE fix, and a revert of github.com/creack/pty to v1.1.18 addresses e2e CI failures running etcdctl. Clients also get a new session option to set a timeout for session creation.
Week of October 12, 2026
What shipped
- ProcessMessages now preserves Ready message order so MsgApp no longer leaves the leader in reverse log order, fixing a case where followers reject messages whose previous index they do not have yet. Pull request #22485
- The keys-only RangeStream data race is fixed by cloning the last key before appending a zero byte, so concurrent streams no longer modify the shared index key. Pull request #22596
- A test was added for the order of messages returned by processMessages, checking current behavior on main. Pull request #22599
- The processMessages output order test was backported to release-3.6, where processMessages already returns kept messages in the correct order. Pull request #22598
- The processMessages order fix was cherry-picked to release-3.7. Pull request #22607
- The flaky TestRevisionMonotonicWithRestarts leader restart test was deflake on release-3.7 by ignoring connection reset by peer errors. Pull request #22573
- End-to-end etcd processes now actually receive the configured log level, since WithLogLevel previously never reached the processes. Pull request #22565
- Go was bumped to 1.26.9 on release-3.6, updating the go-version file and every toolchain directive. Pull request #22556
- Go was bumped to 1.26.9 on release-3.7 to pick up the security fixes listed in the related issue. Pull request #22555
- Go was bumped to 1.26.9 on release-3.5, with go directives left unchanged. Pull request #22557
Why it matters
This week lands a correctness fix for leader message ordering and a data race fix in keys-only RangeStream, both of which affect how the server handles streaming reads and replication traffic. The Go and dependency bumps, including x/net to v0.61.0 and otel to v1.45.0, address govulncheck failures and known vulnerability reports across the 3.5, 3.6 and 3.7 release lines. Test backports and a deflake also reduce noise for people running integration suites on the release branches.
Changelog entry
- Etcdserver: keep Ready message order in processMessages so MsgApp is not emitted in reverse log order. Pull request #22485
- Etcdserver: fix data race in keys-only RangeStream by cloning the last key before appending a zero byte. Pull request #22596
- Etcdserver: add test for processMessages output order on main. Pull request #22599
- Etcdserver: backport processMessages output order test to release-3.6. Pull request #22598
- Etcdserver: cherry-pick processMessages order fix to release-3.7. Pull request #22607
- Tests: deflake revision monotonic leader restart test on release-3.7. Pull request #22573
- Tests: pass log level to e2e etcd processes, since it never reached them before. Pull request #22565
- Bump golang.org/x/net to v0.61.0 on release-3.6 to fix govulncheck errors. Pull request #22590
- Bump golang.org/x/net to v0.61.0 on release-3.7 to fix govulncheck errors. Pull request #22583
- Bump golang.org/x/net to v0.61.0 on release-3.5 to fix govulncheck errors. Pull request #22591
- Bump Go to 1.26.9 on release-3.7 for the listed security fixes. Pull request #22555
- Bump Go to 1.26.9 on release-3.6, updating the go-version file and toolchain directives. Pull request #22556
This week: processMessages now keeps Ready message order, so MsgApp no longer goes out in reverse log order. Keys-only RangeStream data race fixed. Go 1.26.9 and x/net v0.61.0 bumps land on 3.5, 3.6 and 3.7. A flaky revision monotonic restart test was deflake.
This week in etcd: processMessages now preserves Ready message order, fixing a case where MsgApp left the leader in reverse log order and followers rejected messages whose previous index they did not have yet. The keys-only RangeStream data race is fixed by cloning the last key before appending a zero byte. Tests for processMessages output order landed on main and release-3.6, and the flaky revision monotonic leader restart test was deflake on release-3.7. Go moves to 1.26.9 and golang.org/x/net to v0.61.0 across 3.5, 3.6 and 3.7 to address govulncheck findings, with otel bumped to v1.45.0.
Week of October 5, 2026
What shipped
- The transaction comparison fix for etcdctl in the 3.6 release line is backported, so comparing a lease no longer panics because the lease ID is parsed as hex. Pull request #22542
- User authentication CLI commands now use the global command timeout so gRPC calls no longer hang during network partitions. Pull request #22522
- The 3.6 changelog now records the etcdctl lease transaction comparison fix. Pull request #22545
- The systemd journal log writer moved from client/pkg to server/embed so client consumers no longer carry the systemd journal dependency. Pull request #22502
- In the 3.7 release line, logutil.NewJournalWriter is deprecated now that the server owns the systemd journal sink. Pull request #22530
- Changelog entries for 3.7 and 3.8 record the deprecation and removal of logutil.NewJournalWriter. Pull request #22531
- This week's dependency updates were applied. Pull request #22546
- Lease test cases were added to TestKVGet. Pull request #22477
- A single-case select in the raft test was replaced with a direct channel receive to clear a static analysis warning. Pull request #22459
Why it matters
This week brings a panic fix for etcdctl lease comparisons back to the 3.6 release line and logs it in the changelog, so users comparing leases in transactions can upgrade without hitting the crash. The authentication commands now respect the global command timeout, which avoids indefinite hangs when the network is partitioned. The journal writer move also drops the systemd journal dependency from client consumers, while the deprecation and removal are documented across 3.7 and 3.8.
Changelog entry
- Etcdctl: parse lease IDs as hex in transaction comparisons so lease comparisons no longer panic (backport to release-3.6). Pull request #22542
- Add a v3.6.16 changelog entry for the etcdctl lease transaction comparison fix. Pull request #22545
- Etcdctl: user authentication commands now honor the global command timeout instead of using context.TODO(). Pull request #22522
- Client/pkg: move the systemd journal log writer to server/embed so client/pkg/v3 no longer depends on github.com/coreos/go-systemd/v22. Pull request #22502
- Client/pkg: deprecate logutil.NewJournalWriter in release-3.7. Pull request #22530
- CHANGELOG: add deprecation and removal entries for logutil.NewJournalWriter for 3.7 and 3.8. Pull request #22531
- Update dependencies for the week. Pull request #22546
- Add lease test cases to TestKVGet. Pull request #22477
- Tests: replace a single-case select with a direct channel receive in
raft_test.go. Pull request #22459
This week: etcdctl lease txn comparison fix backported to 3.6 and added to the changelog, auth CLI commands now honor the global command timeout, and the systemd journal log writer moved to server/embed so client consumers no longer carry that dependency.
This week in etcd: the etcdctl transaction comparison fix for leases was backported to release-3.6 and a v3.6.16 changelog entry was added, so lease comparisons no longer panic. User authentication CLI commands now apply the global --command-timeout instead of context.TODO(), which prevents long hangs during network partitions. The systemd journal log writer moved from client/pkg to server/embed, removing the systemd journal dependency from client consumers, and its deprecation and removal were recorded for 3.7 and 3.8. Tests also gained lease cases and a simpler channel receive in raft tests, plus the weekly dependency updates.
Week of September 21, 2026
What shipped
- Released v3.7.2 with bug fixes and improvements. Release
- Released v3.6.15 with bug fixes and improvements. Release
- Released v3.5.34 with bug fixes and improvements. Release
- Introduced NonBlockingDefrag feature gate (beta) that allows defragmentation to run mostly in the background while serving normal reads and writes, with only a short pause at the end. Pull request #22425
- Fixed resource leaks in WAL Open and Create error handling paths. Pull request #21766
- Bumped google.golang.org/grpc to v1.83.1 in release-3.5 to address CVE-2026-84303. Pull request #22467
- Bumped google.golang.org/grpc to v1.83.2 in release-3.6 to address CVE-2026-84303. Pull request #22468
- Bumped google.golang.org/grpc to v1.83.2 in release-3.7 to address CVE-2026-84303. Pull request #22469
- Added validation for watch cardinality flags in benchmark tool to prevent invalid non-positive values. Pull request #22453
- Fixed alert description for etcdHighNumberOfFailedProposals to match the actual evaluation window. Pull request #22324
Why it matters
Three patch releases shipped across active versions with security updates addressing CVE-2026-84303 in gRPC. A new non-blocking defragmentation feature provides better availability during maintenance operations. Several bug fixes address resource leaks and improve operational tooling.
Changelog entry
- Add NonBlockingDefrag feature gate (beta) to make defragmentation mostly non-blocking, copying data in the background while serving traffic Pull request #22425
- Fix resource leaks in WAL Open and Create error handling paths Pull request #21766
- Add validation for watch cardinality flags in benchmark tool Pull request #22453
- Fix etcdHighNumberOfFailedProposals alert description to align with rate window Pull request #22324
- Bump google.golang.org/grpc to v1.83.1 in v3.5 branch to address CVE-2026-84303 Pull request #22467
- Bump google.golang.org/grpc to v1.83.2 in v3.6 branch to address CVE-2026-84303 Pull request #22468
- Bump google.golang.org/grpc to v1.83.2 in v3.7 branch to address CVE-2026-84303 Pull request #22469
Etcd v3.7.2, v3.6.15, and v3.5.34 released. Security updates for CVE-2026-84303. New non-blocking defragmentation feature in v3.7.2.
Three etcd patch releases are available: v3.7.2, v3.6.15, and v3.5.34. These releases include security updates addressing CVE-2026-84303 in google.golang.org/grpc, critical for systems with gRPC dependencies. v3.7.2 introduces a new non-blocking defragmentation feature that allows defrag to run mostly in the background, minimizing service interruption. Bug fixes address resource leaks in WAL handling.
More from etcd-io/etcd on GitHub
Merged pull requests
- [2026-09-21] dependency bump (#22474, merged September 25, 2026 by ivanvc) (source)
- Support non-blocking defragmentation (#22425, merged September 25, 2026 by ahrtr) (source)
- Remove redundant KV get tests (#22423, merged September 25, 2026 by akstron) (source)
- doc: update changelog for v3.5.35 (#22473, merged September 24, 2026 by silentred) (source)
- tools/benchmark: validate watch cardinality flags before execution (#22453, merged September 23, 2026 by pujitha24) (source)
- Changelog entries for 3.7.2, 3.6.15 and 3.5.34 (#22471, merged September 23, 2026 by ivanvc) (source)
- [release-3.5] fix: fsync snap directory when saving a received snapshot db (#22472, merged September 23, 2026 by silentred) (source)
- [release-3.5] dependency: bump google.golang.org/grpc to v1.83.1 (#22467, merged September 22, 2026 by ivanvc) (source)
- [release-3.6] dependency: bump google.golang.org/grpc to v1.83.2 (#22468, merged September 22, 2026 by ivanvc) (source)
- [release-3.7] dependency: bump google.golang.org/grpc to v1.83.2 (#22469, merged September 22, 2026 by ivanvc) (source)
- [release-3.5] fileutil: close locked file handle on os.Remove error in purgeFile (#22457, merged September 21, 2026 by k8s-infra-cherrypick-robot) (source)
- [release-3.6] fileutil: close locked file handle on os.Remove error in purgeFile (#22456, merged September 21, 2026 by k8s-infra-cherrypick-robot) (source)