Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependency update - Golang 1.22.0 #3280

Open
43 of 45 tasks
MadhavJivrajani opened this issue Sep 20, 2023 · 19 comments
Open
43 of 45 tasks

Dependency update - Golang 1.22.0 #3280

MadhavJivrajani opened this issue Sep 20, 2023 · 19 comments
Assignees
Labels
area/dependency Issues or PRs related to dependency changes area/release-eng Issues or PRs related to the Release Engineering subproject kind/feature Categorizes issue or PR as related to a new feature. needs-priority sig/release Categorizes an issue or PR as relevant to SIG Release.

Comments

@MadhavJivrajani
Copy link

MadhavJivrajani commented Sep 20, 2023

Tracking info

Link to any previous tracking issue: #3076

Golang mailing list announcement: for go1.22 https://groups.google.com/g/golang-announce/c/TpowDYVBMoY/m/3YwLkOoOAAAJ

SIG Release Slack thread: https://kubernetes.slack.com/archives/CJH2GBF7Y/p1707291164014399

Work items for Go1.22rc1

Work items for Go1.22rc2

After kube-cross image promotion

Note
This update may require an update to go.sum files, for example: kubernetes/kubernetes#118507
This will require an API Review approval.

After go-runner image promotion

After kubernetes/kubernetes (master) has been updated

Work items for Go1.22

After kube-cross image promotion

Note
This update may require an update to go.sum files, for example: kubernetes/kubernetes#118507
This will require an API Review approval.

After go-runner image promotion

After distroless-iptables image promotion

After kubernetes/kubernetes (master) has been updated

Follow-up items

  • Ensure the Golang issue template is updated with any new requirements

cc: @kubernetes/release-engineering
cc: @liggitt

@MadhavJivrajani MadhavJivrajani added kind/feature Categorizes issue or PR as related to a new feature. sig/release Categorizes an issue or PR as relevant to SIG Release. area/release-eng Issues or PRs related to the Release Engineering subproject area/dependency Issues or PRs related to dependency changes labels Sep 20, 2023
@MadhavJivrajani
Copy link
Author

MadhavJivrajani commented Sep 20, 2023

Tracking PRs related to go1.22 that we would need to pick to release branches as part of an eventual update to go1.22:


Tracking verification of conditions for bumping go1.21 on release branches:

  • ~6th May: 3 months after go 1.22 release (6th Feb 2024)
  • ~17th May: 1 month after Kubernetes 1.30 release on go1.22 (17th Apr 2024)
  • no regressions relative to go 1.22 known to impact Kubernetes
  • pass unit and integration tests with both go 1.22 and the original go version for the release branch
    • 1.26:
    • 1.27:
    • 1.28:
    • 1.29:
  • any behavior changes in go 1.22 are mitigated to preserve existing behavior without requiring action by Kubernetes end-users
    • 1.26:
    • 1.27:
    • 1.28:
    • 1.29:

Tracking the PR that actually bumps to go1.22:

    • 1.26:
    • 1.27:
    • 1.28:

@pohly
Copy link
Contributor

pohly commented Jan 4, 2024

kubernetes/kubernetes#120750 is getting cherry-picked in:

@cpanato
Copy link
Member

cpanato commented Jan 4, 2024

/assign
i will work on the release engineering side, image bumps and other things :)

@liggitt
Copy link
Member

liggitt commented Feb 9, 2024

add golang/go#65625 as a potential go1.22 regression to track (either until it is resolved, or until we are sure it doesn't impact Kubernetes' use of go)

@cpanato
Copy link
Member

cpanato commented Feb 11, 2024

maybe we can close this issue and open a new one to track #3280 (comment)

wdyt? @liggitt @MadhavJivrajani

@MadhavJivrajani
Copy link
Author

@cpanato I'm not sure I fully understand why we need a new issue - maybe I'm missing something?

@liggitt - tracked golang/go#65625 as a regression, thanks!

@liggitt
Copy link
Member

liggitt commented Feb 12, 2024

maybe we can close this issue and open a new one to track #3280 (comment)

I have a slight preference for keeping everything associated with the minor update in a single issue, but it is a little weird for an issue titled go1.22.0 to track the minor update of release branches to an eventual go1.22.x... maybe we could truncate the title to go1.22?

@cpanato
Copy link
Member

cpanato commented Feb 12, 2024

ok not a problem, was more a suggestion :) we keep this open

@liggitt
Copy link
Member

liggitt commented Mar 4, 2024

kubernetes/kubernetes#121476 bumped honnef.co/go/tools to v0.4.6

it turns out that release specifically contained a fix for evaluating go1.22: https://github.com/dominikh/go-tools/releases/tag/2023.1.6

please add that to the list of updates tracked in #3280 (comment) needed for go1.22

@MadhavJivrajani
Copy link
Author

@liggitt good catch! Thanks, I've tracked the PR.

@MadhavJivrajani
Copy link
Author

@pohly FYI ^
We'll probably need to backport kubernetes/kubernetes#121476 to 1.27 and 1.28

@pohly
Copy link
Contributor

pohly commented Mar 5, 2024

Do we want to backport golangci-lint v1.55.1 or just bump up honnef.co/go/tools to v0.4.6 on older branches?

@liggitt
Copy link
Member

liggitt commented Mar 5, 2024

not sure... maybe do an experimental PR to release-1.29 that bumps .go-version to 1.22.0 and just honnef.co/go/tools to v0.4.6 and see if CI passes? if so, maybe limit to just the honnef.co/go/tools bump?

@liggitt
Copy link
Member

liggitt commented Mar 5, 2024

@liggitt good catch! Thanks, I've tracked the PR.

thanks... can go ahead and mark 1.26 as not backported for all of those because it reached EOL

@pohly
Copy link
Contributor

pohly commented Mar 7, 2024

release-1.29 is already on golangci-lint v1.55.1 and thus honnef.co/go/tools v0.4.6. release-1.28 and older aren't.

When bumping only honnef.co/go/tools v0.4.6 together with .go-version, linting passed on
release-1.28 and release-1.27. Code gen wasn't happy about .go-version at 1.22.0, but I suppose that's separate.

Shall I turn those PRs into proper updates of honnef.co/go/tools?

@liggitt
Copy link
Member

liggitt commented Mar 11, 2024

Shall I turn those PRs into proper updates of honnef.co/go/tools?

yes, that would be great

@MadhavJivrajani
Copy link
Author

MadhavJivrajani commented May 17, 2024

Now that we are about to start the process of bumping the Go major version on release branches, we have one tracked regression that seems to affect runc: golang/go#65625

However, this issue is not a bug in Go itself but in glibc (specifically starting from glibc 2.25): golang/go#65625 (comment). However, the issue seems to be triggered in go1.22 because of it calling pthread_getattr_np(pthread_self(), &attr)

There is an attempt at gracefully handing this in go, however that also does not seem to be a sustainable solution: https://go-review.googlesource.com/c/go/+/585019

The workaround here needs to be in runc itself as mentioned here: opencontainers/runc#4233

cc @liggitt

@MadhavJivrajani
Copy link
Author

cc @akhilerm

@BenTheElder
Copy link
Member

Though also we're pretty sure that bug only affects runc with nsenter, which kubelet is not doing, so as long as your runc binary is not with go 1.22 kubelet can be as far as I know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/dependency Issues or PRs related to dependency changes area/release-eng Issues or PRs related to the Release Engineering subproject kind/feature Categorizes issue or PR as related to a new feature. needs-priority sig/release Categorizes an issue or PR as relevant to SIG Release.
Projects
None yet
Development

No branches or pull requests

6 participants