Comments (7)
We should follow the same rule to manage go version for all repositories under etcd-io. Note we only require users to depend on a minor version supported by golang team, i.e. 1.21, but we don't force users to depend on a patch version, i.e. 1.21.10.
from etcd.
One problem is that if a dependency sets a higher go or toolchain version, then when running scripts/fix.sh will automatically update the go & toolchain version in our go.mod files.
We are trying to be more careful about this situation in Kubernetes (ref: kubernetes/kubernetes#123744).
One thing we should keep in mind here also is that if dependabot bumps the go
directive of the root go.mod
and we don't reflect that change in the .go-version
file then it could be problematic for reasons similar to kubernetes/kubernetes#123744, if that happens, we are in a situation where:
- We build with a go version that is in .go-version, because the release GH action uses that as source of truth.
- However, if the
go
directive ingo.mod
is newer,go
will default the values ofGODEBUG
based on the value of thego
directive (see https://go.dev/doc/godebug). This will alter the runtime behaviour because the user might expect behaviour similar to whatever thego
directive is, but the actual behaviour is that of.go-version
.
In Kubernetes we added a pre-submit check to catch such accidental bumps if they occur: kubernetes/kube-openapi#467
from etcd.
In Kubernetes we added a pre-submit check to catch such accidental bumps if they occur: kubernetes/kube-openapi#467
Thanks @MadhavJivrajani
I think we should do similar check for all etcd branches: including release-3.4
, release-3.4
and main
.
The other potential enhancement is to automatically populate the go versions for the go
and toolchain
lines in all go.mod (and go.sum) files based on the .go-version
file.
from etcd.
I have some ideas on how we can go about doing this. Will create a PR and we can discuss there!
from etcd.
Followups:
- Update document: #17876 (comment)
- Refactor the ./scripts/fix.sh as mentioned in #17876 (comment)
from etcd.
I think we also need to backport the changes to both 3.5 and 3.4
from etcd.
Cross-posting and quoting my comment from #17876 (comment):
This implementation is great (referring to #17876) and simplifies what would be tedious if done by hand. We recently had the Go version updated by a new contributor, and I believe it wasn't very clear to him how to update the toolchain in the different go.mod files (refer to: #17975 (comment)). I think we would benefit from documenting this somewhere in the repository.
A potential improvement regarding documentation would be to document how to update the Go version. In the main branch with this new script, I think it's as easy as updating the value in .go-version and running make fix after 🎉
from etcd.
Related Issues (20)
- The database file size of etcd has exceeded the configured quota HOT 2
- Make linearizable renew lease configurable HOT 1
- Slow watchers impact PUT latency HOT 10
- Enable Prow plugins for etcd PRs HOT 8
- db file flocked by another, or taking too long HOT 1
- failed to purge snap db file HOT 3
- Address CVE-2024-24790 HOT 6
- Worrying trend with test coverage HOT 9
- Robustness test flake on a tombstone
- Migrate the robustness tests to prow HOT 14
- Test if watch is sequential HOT 3
- Gofailpoints should simulate proper process crash instead of panic HOT 4
- Separate Robustness compaction and LazyFS test scenario HOT 1
- Election.Observe may report the wrong leader HOT 6
- Typo in etcd data model image HOT 1
- Go vulnerability check doesn't run on submodules HOT 12
- errors.ErrTooManyRequests and maxGapBetweenApplyAndCommitIndex HOT 7
- Implement a check to validate that dependency versions match across submodules HOT 8
- Allow revision filters on delete ops
- robustness: reduce concurrency for HighTraffic scenario HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from etcd.