-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
etcd not compatible with grpc v1.30.0 #12124
Comments
I think rootcause is like #12068 , there is no |
As a workaround, you can pin it to 1.29.1: require ( But we should migrate out of the deprecated naming namespace. |
go.mod |
I don't need a work around, I want to use grpc v1.30.0 to keep up to date. |
After a bit of investigation. It looks like upgrading (switch from grpc/naming to grpc/resolver) isn't possible without breaking compatibility.
Alternatively, we can copy |
I have good news and bad news: I did a little experimentation. Adding But another part of etcd is exposed as incompatible:
This is because of this change: grpc/grpc-go@4eb418e The grpc maintiners went through the trouble of creating a V2Picker, then broke semantic versioning intentionally. I think the best option is to bite the bullet and upgrade with the incompatible changes, we can do this while adding go.mod which already changes the module path. |
@xiegeo Hi there, did you migrate In case you stacked with |
@zerospiel Nope, still waiting for the etcd core maintainers to decide what to keep and what to drop at each stage. |
We (Kubernetes) would also like to see etcd updated to use the latest grpc. Ideally, use @gyuho 👋 do you have suggestions on which of the above approaches to take here? |
If anyone in a hurry to update to In |
I've attempted an upgrade in this draft PR #12155 but I'm having an issue due to the protobuf upgrade too. I didn't have much time to investigate it, but a second pair of 👀 would be very appreciated. |
@gyuho 👋 can you take a look? |
Hi, Upgrading gRPC has always been painful where we had to basically rewrite client library. I will take a look to estimate how much work we need to upgrade gRPC and post updates here. I am currently busy with other tasks.
/cc @jpbetz |
I am afraid if this requires us to rewrite our client third time just to make it compatible with gRPC :/ I will be working on some design doc about our long term plan. I would like to decouple clientv3 from gRPC as much as possible. |
I would recommend not using gRPC APIs explicitly marked as experimental in the documentation. This will avoid any potential future breakages. If you are missing functionality you need from our stable APIs, please reach out to us by filing an issue, and we will work with you to find a solution. |
@dfawley Thanks. Yes, going forward, we will rely less on the experimental APIs. Will definitely reach out to the gRPC team. |
Is it possible to update the |
Is there a timeline for the 3.5 milestone and whatever fix ends up getting committed? |
as of v1.30.0, there are breaking changes which are not compatible with etcd today, see etcd-io/etcd#12124
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
Update package imports to reflect go-mod dependency versions. Update to etcd/v3. etcd upstream versioning doesn't play well with Go modules or newer versions of gRPC. v3.5.0 and newer follow Go semantic versioning guidelines and resolves most versioning conflicts with co-dependent libraries. There are many issues surrounding this, see [1]. Fix test-examples for Go Modules. Previously this test script symlinked the examples source directory outside of the mgmt tree, but this doesn't work with Go modules. Switch to building the example programs in-place, and simplify the script to reduce the amount of superfluous operations. Fixes a couple shellcheck warnings in test-examples too. [1]: etcd-io/etcd#12124 Signed-off-by: Joe Groocock <me@frebib.net>
- retry_interceptor_test causes: clientv3/naming/grpc.go:25:2: module google.golang.org/grpc@latest found (v1.46.0), but does not contain package google.golang.org/grpc/naming etcd-io#12124 - old bolt db causes: fatal error: checkptr: converted pointer straddles multiple allocations etcd-io/bbolt#187
- retry_interceptor_test causes: clientv3/naming/grpc.go:25:2: module google.golang.org/grpc@latest found (v1.46.0), but does not contain package google.golang.org/grpc/naming etcd-io#12124
- retry_interceptor_test causes: clientv3/naming/grpc.go:25:2: module google.golang.org/grpc@latest found (v1.46.0), but does not contain package google.golang.org/grpc/naming etcd-io#12124
Currently as I see clientv3 still uses deprecated resolver:
If we try to update it with the new implemented resolver it will create import cycle, as I tried to do:
What is the best way around for refactoring it? what do you think? One solution I see is injecting []grpc.DialOption: *Client.Dial(ep string, dopts ...grpc.DialOption ) |
I had the same problem today. |
etcd 3.5 uses grpc 1.41: Line 35 in b10adb6
Please open a new issue with an exact description if there is another problem with:
|
Which grpc version is compatible with etcd v3.3.27+incompatible. If I am using latest grpc (v1.64.0), It's throwing error: it does not contain google.golang.org/grp/naming For that I tried using grpc(v1.29.1). but getting following error on compilation github.com/coreos/etcd/clientv3/balancer/resolver/endpoint../../go/pkg/mod/github.com/coreos/etcd@v3.3.27+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:87: undefined: resolver.BuildOption github.com/coreos/etcd/clientv3/balancer/picker../../go/pkg/mod/github.com/coreos/etcd@v3.3.27+incompatible/clientv3/balancer/picker/err.go:37:53: undefined: balancer.PickOptions |
To reproduce:
$ go get google.golang.org/grpc@latest go: google.golang.org/grpc latest => v1.30.0 $ go mod tidy ... go.etcd.io/etcd/v3/clientv3/naming imports google.golang.org/grpc/naming: module google.golang.org/grpc@latest found (v1.30.0), but does not contain package google.golang.org/grpc/naming
This is a problem for dependents of etcd who want to use the latest grpc.
The
naming
package was removed at grpc/grpc-go#3314 and was deprecated in favour ofresolver
.I can work on a pull request if that's helpful.
The text was updated successfully, but these errors were encountered: