chore(deps): bump go.etcd.io/etcd/client/v3 from 3.5.21 to 3.6.12#164
chore(deps): bump go.etcd.io/etcd/client/v3 from 3.5.21 to 3.6.12#164dependabot[bot] wants to merge 1 commit into
Conversation
Bumps [go.etcd.io/etcd/client/v3](https://github.com/etcd-io/etcd) from 3.5.21 to 3.6.12. - [Release notes](https://github.com/etcd-io/etcd/releases) - [Commits](etcd-io/etcd@v3.5.21...v3.6.12) --- updated-dependencies: - dependency-name: go.etcd.io/etcd/client/v3 dependency-version: 3.6.12 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
|
|
📝 WalkthroughWalkthroughThis PR updates Go module dependencies in ChangesDependency Updates
🎯 1 (Trivial) | ⏱️ ~3 minutes
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
| Duplication | 0 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@go.mod`:
- Around line 22-24: The go.mod shows an etcd client/server version skew
(go.etcd.io/etcd/client/v3 at v3.6.12 vs go.etcd.io/etcd/server/v3 at v3.5.21),
which can hide incompatibilities if you rely on v3.6-only features; either align
the module versions or add explicit integration tests for any v3.6-specific
APIs. Fix: update go.mod so go.etcd.io/etcd/server/v3 matches client/v3 (set
server/v3 to v3.6.12) or downgrade client/v3 to v3.5.21, and/or add integration
tests exercising any advanced APIs you use (watch/lease/KV calls) to confirm
behavior against the embedded/CI server; refer to the go.mod entries
go.etcd.io/etcd/client/v3 and go.etcd.io/etcd/server/v3 when making the change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: a6d53e07-58e9-4819-b9f6-c8740b70f575
⛔ Files ignored due to path filters (1)
go.sumis excluded by!**/*.sum
📒 Files selected for processing (1)
go.mod
| go.etcd.io/etcd/api/v3 v3.6.12 | ||
| go.etcd.io/etcd/client/v3 v3.6.12 | ||
| go.etcd.io/etcd/server/v3 v3.5.21 |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
etcd v3.6.0 breaking changes and compatibility with v3.5
💡 Result:
etcd v3.6.0 introduces several critical breaking changes and specific requirements for upgrading from v3.5. Key Breaking Changes in v3.6.0: - Peer Endpoints Restriction: Peer endpoints (--listen-peer-urls) no longer serve client requests [1][2]. - CLI Tool Boundaries: A clear boundary between etcdctl (online) and etcdutl (offline) has been established [1]. Commands previously shared or used via etcdctl—specifically defrag, snapshot status, and snapshot restore—are now strictly delegated to etcdutl [1][2]. - Data Schema Incompatibility: Older etcd binaries are incompatible with newer data schema versions; for example, v3.5 binaries cannot start with data created by v3.6 [1][2]. - Removed Flags: Several flags, including all v2-related experimental flags (e.g., --enable-v2, --experimental-enable-v2v3) and various proxy-related flags, have been removed [2]. - CLI Behavior: etcdctl will now sleep for 2 seconds when performing a range delete without the --range flag [2]. Upgrade Compatibility and Requirements: - Mandatory Pre-requisite: Before upgrading to v3.6, you must upgrade your v3.5 cluster to v3.5.26 or later [3][4]. - Preventing Data/Membership Inconsistencies: Upgrading to v3.5.26+ is necessary to resolve potential inconsistencies between v2store and v3store regarding membership data, which could otherwise lead to "zombie" members or upgrade failures (e.g., "membership: too many learner member in cluster") [5][6][4]. - General Policy: etcd supports upgrading only one minor version at a time (e.g., v3.5 to v3.6) [7]. Patch upgrades (within the same minor version) are supported, but skipping minor versions is not [7]. - Process: The upgrade is generally performed as a zero-downtime, rolling replacement of binaries [3]. The cluster operates using the protocol of the lowest common version until all members are upgraded [3].
Citations:
- 1: https://etcd.io/blog/2025/announcing-etcd-3.6/
- 2: https://github.com/etcd-io/etcd/blob/ab9157da/CHANGELOG/CHANGELOG-3.6.md
- 3: https://etcd.io/docs/v3.6/upgrades/upgrade_3_6/
- 4: https://kubernetes.io/blog/2025/12/21/preventing-etcd-zombies/
- 5: https://etcd.io/blog/2025/upgrade_from_3.5_to_3.6_issue_followup/
- 6: https://etcd.io/blog/2025/upgrade_from_3.5_to_3.6_issue/
- 7: etcd-io/website@d60030f
🌐 Web query:
etcd client v3.6 compatibility with server v3.5
💡 Result:
Yes, the etcd client v3.6 is generally compatible with the etcd server v3.5. The etcd API follows semantic versioning principles where the v3 API is designed to be stable, meaning newer client libraries (like v3.6) are typically backward compatible with older minor server versions (like v3.5) [1]. While etcd does not publish a formal, exhaustive compatibility matrix, the project design ensures that clients can communicate with server versions that support the same API version [1][2]. Key considerations for compatibility include: 1. Protocol Support: etcd clusters operate using the protocol of the lowest common version during rolling upgrades [3][4]. Client libraries are generally designed to handle communication across minor versions, provided they are within the supported range of the v3 API [1]. 2. Feature Limitations: While a v3.6 client can communicate with a v3.5 server, you will only be able to utilize features that are supported by the server. If you attempt to use a feature introduced in v3.6, the v3.5 server will not recognize it [3][4]. 3. Best Practices: It is standard practice to upgrade the etcd server cluster to the newer version (v3.6) to take full advantage of new features, bug fixes, and performance improvements [5][4]. If you are maintaining a cluster, ensure that your server is running a recent patch version (e.g., v3.5.20+) before attempting an upgrade, as early minor releases may contain known bugs or specific upgrade path requirements [6][7]. Always verify your specific use case by testing, especially if your application relies on advanced or experimental features, as these may have different requirements depending on the server version [8].
Citations:
- 1: https://etcd.io/docs/v3.4/op-guide/versioning/
- 2: Add comaptibility matrix etcd-io/etcd#17838
- 3: https://etcd.io/docs/v3.5/upgrades/upgrade_3_4/
- 4: https://etcd.io/docs/v3.6/upgrades/upgrade_3_6/
- 5: https://etcd.io/blog/2025/announcing-etcd-3.6/
- 6: https://etcd.io/blog/2025/upgrade_from_3.5_to_3.6_issue/
- 7: https://releaserun.com/etcd/
- 8: https://github.com/grafana/etcd/blob/4d096814/CHANGELOG/CHANGELOG-3.6.md
Review go.mod etcd client/server version skew (v3.6.12 client vs v3.5.21 server)
go.etcd.io/etcd/client/v3 is bumped to v3.6.12 while go.etcd.io/etcd/server/v3 stays v3.5.21 (go.mod lines 22-24). etcd’s v3 API is designed for backward compatibility across minor versions, so this skew is generally expected to work for standard KV/watch/lease operations—but any v3.6-only features/behaviors used by the code won’t be recognized by a v3.5 server. Add/confirm integration coverage for the specific operations you rely on if server/v3 is used for embedded server/test scenarios.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@go.mod` around lines 22 - 24, The go.mod shows an etcd client/server version
skew (go.etcd.io/etcd/client/v3 at v3.6.12 vs go.etcd.io/etcd/server/v3 at
v3.5.21), which can hide incompatibilities if you rely on v3.6-only features;
either align the module versions or add explicit integration tests for any
v3.6-specific APIs. Fix: update go.mod so go.etcd.io/etcd/server/v3 matches
client/v3 (set server/v3 to v3.6.12) or downgrade client/v3 to v3.5.21, and/or
add integration tests exercising any advanced APIs you use (watch/lease/KV
calls) to confirm behavior against the embedded/CI server; refer to the go.mod
entries go.etcd.io/etcd/client/v3 and go.etcd.io/etcd/server/v3 when making the
change.



Bumps go.etcd.io/etcd/client/v3 from 3.5.21 to 3.6.12.
Release notes
Sourced from go.etcd.io/etcd/client/v3's releases.
... (truncated)
Commits
90b034aversion: bump up to 3.6.128b95963Merge pull request #21811 from Deln0r/release-3.6-backport-21666576a6a0server: allow non-admin maintenance status2286051Merge pull request #21794 from vivekpatani/cherry-pick-21788-release-3.6e1468c8client/pkg/fileutil: use os.Getuid() to skip TestIsDirWriteable as rootaaf38f8Merge pull request #21768 from silentred/release-3.6-etcdutl-invalid-datadir449e34betcdutl: validate data file path and return consistent errors instead of pani...00e1b15Merge pull request #21736 from silentred/release-3.6-bugfix-memberupdate-learner49cd4a4bugfix: MemberUpdate implicitly and unexpectedly promotes a learner9bbe31bMerge pull request #21727 from silentred/release-3.6-bump-go-1.25.10Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Summary by CodeRabbit