-
Notifications
You must be signed in to change notification settings - Fork 81
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
panic: protobuf tag not enough fields in Status.state #62
Comments
It seems gogo/protobuf is not compatible with APIv2 protobuf 1.4 Since gogo/protobuf is looking for new maintainers, I don't expect this to be "fixable" soon. The best option would be to move to github.com/golang/protobuf. |
Looked a bit into this: ttrpc relies on gogo/protobuf and imports: googleapis are generated via golang protobuf, so newer versions of googleapis bring a different go file. The rcp/status package contains just one status.pb.go file, generated from Here the commit updating the generated code when switching to the newer golang protobuf: gogo/protobuf unmarshal code checks explicitly for the older Status struct members (e.g., look as an example at https://github.com/gogo/protobuf/blob/master/proto/table_unmarshal.go#L327 and googleapis/go-genproto@8feb7f2#diff-98786b22033f064ef96637aa8531dbe9L42). gogo/protobuf unmashal code then panics as it is not able to recognize the newer So, the question is: how will this be handled in the ttrpc package? As seems no one is going to jump on updating the gogo/protobuf, will the gogo/protobuf be dropped in favor of the newer golang/protobuf? It will be not a trivial change but waht could be the other options? |
Is there any update here? We're running into the same error in https://github.com/Microsoft/hcsshim |
We're running into the same issue when trying to update K3s to Kubernetes 1.22: Unfortunately we can't work around this by downgrading our vendored grpc libraries to 1.27.0, as Kubernetes 1.22 now includes opentelemetry support which needs at least grpc 1.32.0. With containerd itself updating the grpc versions in containerd/containerd#5613, it seems like the only thing left to do is dig in and fix ttrpc to drop the deprecated libraries. |
For the record, that workaround did work. It appears that pinning go-genproto to any commit before googleapis/go-genproto#366 was merged should resolve the issue. As noted above the gogo/protobuf code expects either legacy |
See containerd/ttrpc#62 for more details.
See containerd/ttrpc#62 for more details.
This was originally locked in microsoft#1000 based on containerd's resolution for containerd/ttrpc#62. However, this was dropped in containerd/containerd#5613 while upgrading libraries we don't actually use, so it was probably never applicable for us. See also containerd/ttrpc#89, which documents that only google.golang.org/genproto needs to be locked. Signed-off-by: Paul "TBBle" Hampson <[email protected]>
This was originally locked in microsoft#1000 based on containerd's resolution for containerd/ttrpc#62. However, this was dropped in containerd/containerd#5613 while upgrading libraries we don't actually use, so it was probably never applicable for us. See also containerd/ttrpc#89, which documents that only google.golang.org/genproto needs to be locked. Signed-off-by: Paul "TBBle" Hampson <[email protected]>
Is that looks the same problem? panic: protobuf tag not enough fields in Empty.state:
goroutine 259 [running]:
github.com/gogo/protobuf/proto.(*unmarshalInfo).computeUnmarshalInfo(0xc0002ae320)
/root/go/pkg/mod/github.com/gogo/[email protected]/proto/table_unmarshal.go:341 +0x1897
github.com/gogo/protobuf/proto.(*unmarshalInfo).unmarshal(0xc0002ae320, 0xc000accc90, 0x0, 0x0, 0x0, 0x40e0f8, 0x20)
/root/go/pkg/mod/github.com/gogo/[email protected]/proto/table_unmarshal.go:138 +0xf65
github.com/gogo/protobuf/proto.(*InternalMessageInfo).Unmarshal(0xc000bde2a0, 0x7fa7115b92d8, 0xc000accc90, 0x0, 0x0, 0x0, 0xc000accc01, 0x0)
/root/go/pkg/mod/github.com/gogo/[email protected]/proto/table_unmarshal.go:63 +0x66
github.com/gogo/protobuf/proto.(*Buffer).Unmarshal(0xc0009891c8, 0x7fa7115b92d8, 0xc000accc90, 0x0, 0x0)
/root/go/pkg/mod/github.com/gogo/[email protected]/proto/decode.go:424 +0x1f5
github.com/gogo/protobuf/proto.Unmarshal(0x0, 0x0, 0x0, 0x7fa7115b92d8, 0xc000accc90, 0xc000bf3d01, 0xc000f1e160)
/root/go/pkg/mod/github.com/gogo/[email protected]/proto/decode.go:342 +0x15e
github.com/containerd/ttrpc.codec.Unmarshal(0x0, 0x0, 0x0, 0x1e5b020, 0xc000accc90, 0xc000ace5c0, 0x0)
/root/go/pkg/mod/github.com/containerd/[email protected]/codec.go:39 +0xf2
github.com/containerd/ttrpc.(*Client).Call(0xc000aca680, 0x23fd128, 0xc00005c308, 0x216da10, 0x28, 0x2141bf8, 0xc, 0x1f8bfe0, 0xc000accc60, 0x1e5b020, ...)
/root/go/pkg/mod/github.com/containerd/[email protected]/client.go:136 +0x38e
github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk/proto.(*extendedStatusClient).ExpandVolume(0xc000989440, 0x23fd128, 0xc00005c308, 0xc000accc60, 0x0, 0xc000aca680, 0xc00000f360)
/root/go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk/proto/disk.pb.go:208 +0xbd
github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk.checkRundVolumeExpand(0xc000230a50, 0x0, 0x0, 0x0)
/root/go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk/utils.go:1559 +0x2b2
github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk.(*nodeServer).NodeExpandVolume(0xc000bf2900, 0x23fd198, 0xc000acc750, 0xc000230a50, 0xc000bf2900, 0x1, 0xc000a809a8)
/root/go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk/nodeserver.go:768 +0x19c
github.com/container-storage-interface/spec/lib/go/csi._Node_NodeExpandVolume_Handler.func1(0x23fd198, 0xc000acc750, 0x1f6c040, 0xc000230a50, 0x0, 0x203000, 0x7fa7111d0f70, 0x18)
/root/go/pkg/mod/github.com/container-storage-interface/[email protected]/lib/go/csi/csi.pb.go:5420 +0x89
github.com/kubernetes-csi/drivers/pkg/csi-common.logGRPC(0x23fd198, 0xc000acc750, 0x1f6c040, 0xc000230a50, 0xc000f1e0e0, 0xc000a80990, 0xc000554b80, 0x646f86, 0x1f422e0, 0xc000acc750)
/root/go/pkg/mod/github.com/kubernetes-csi/[email protected]/pkg/csi-common/utils.go:99 +0x164
github.com/container-storage-interface/spec/lib/go/csi._Node_NodeExpandVolume_Handler(0x1f642e0, 0xc000bf2900, 0x23fd198, 0xc000acc750, 0xc000bf3aa0, 0x2235048, 0x23fd198, 0xc000acc750, 0xc0004c0e00, 0xf4)
/root/go/pkg/mod/github.com/container-storage-interface/[email protected]/lib/go/csi/csi.pb.go:5422 +0x150
google.golang.org/grpc.(*Server).processUnaryRPC(0xc000d21200, 0x2419e58, 0xc000e00d80, 0xc000c00c00, 0xc000ad0300, 0x375bd38, 0x0, 0x0, 0x0)
/root/go/pkg/mod/google.golang.org/[email protected]/server.go:1024 +0x522
google.golang.org/grpc.(*Server).handleStream(0xc000d21200, 0x2419e58, 0xc000e00d80, 0xc000c00c00, 0x0)
/root/go/pkg/mod/google.golang.org/[email protected]/server.go:1313 +0xd2c
google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc000b00430, 0xc000d21200, 0x2419e58, 0xc000e00d80, 0xc000c00c00)
/root/go/pkg/mod/google.golang.org/[email protected]/server.go:722 +0xab
created by google.golang.org/grpc.(*Server).serveStreams.func1
/root/go/pkg/mod/google.golang.org/[email protected]/server.go:720 +0xa5
|
Looks same:
|
Yes, these are all the same problem. It's pretty well defined at this point. Just posting stack traces without any info on where or when you're seeing them doesn't really add much to the conversation though. |
What info is required? $ docker -v
Docker version 20.10.11, build dea9396
$ containerd -v
containerd github.com/containerd/containerd 1.4.4 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
$ uname -a
Linux docker.lan 5.10.83-5.ph4-esx #1-photon SMP Tue Jan 4 02:55:19 UTC 2022 x86_64 GNU/Linux |
Same problem with Kubernetes v1.23.3
|
The main branch no longer have gogo/protobuf and can be used with latest protobuf packages from Google. Upgrade in containerd is still in progress. The tracking ticket is containerd/containerd#6564. |
Resolving since both containerd/ttrpc and containerd/containerd don't directly consume gogo/protobuf anymore! |
This was originally locked in microsoft#1000 based on containerd's resolution for containerd/ttrpc#62. However, this was dropped in containerd/containerd#5613 while upgrading libraries we don't actually use, so it was probably never applicable for us. See also containerd/ttrpc#89, which documents that only google.golang.org/genproto needs to be locked. Signed-off-by: Paul "TBBle" Hampson <[email protected]>
This was originally locked in microsoft#1000 based on containerd's resolution for containerd/ttrpc#62. However, this was dropped in containerd/containerd#5613 while upgrading libraries we don't actually use, so it was probably never applicable for us. See also containerd/ttrpc#89, which documents that only google.golang.org/genproto needs to be locked. Signed-off-by: Paul "TBBle" Hampson <[email protected]>
See also: - containerd/ttrpc#62 (comment) Signed-off-by: Christos Katsakioris <[email protected]>
until containerd is using new versions of ttrpc Context: containerd/ttrpc#62
until containerd is using new versions of ttrpc Context: containerd/ttrpc#62
Go 1.15 beta 1 , with github.com/gogo/protobuf 1.3.1
Not sure if I amdoung something wrong.
The text was updated successfully, but these errors were encountered: