-
Notifications
You must be signed in to change notification settings - Fork 1.1k
ttrpc: force pkg dependencies to older ones compatible with gogo/protobuf #4151
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
Conversation
|
Hi @fgiudici. Thanks for your PR. I'm waiting for a cri-o member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Codecov Report
@@ Coverage Diff @@
## master #4151 +/- ##
=======================================
Coverage 40.85% 40.85%
=======================================
Files 111 111
Lines 9501 9501
=======================================
Hits 3882 3882
Misses 5242 5242
Partials 377 377 |
835375f to
e26a8e2
Compare
|
/ok-to-test |
|
I've just tested this PR and it does work as expected with latest CRI-O. One thing that i'd like to see is a more detailed commit message, as this problem hit us and hit us hard. So, as much information we can add there, the better. Last but not least, we'd need to backport this to the release-1.19 branch, once it's approved here. @fgiudici, thanks a ton for working on this and for providing a temporary solution till we have the things fixed on ttrpc side, very much appreciated! |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: fgiudici, mrunalp The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
@fgiudici test failures are legit: you can find them by clicking on the details->Artifacts->artifacts/->testout.txt: you can run these tests locally with:
|
thanks, looking into it |
e26a8e2 to
c78a088
Compare
|
/hold After talking with Francesco, we've decided to explicitly set a "do-not-merge" on this one, in order to avoid it being accidentally merged while he's still digging (more and more) into the issue. |
|
I've tested the PR as it's now and it does solve the registration clash and works as expected, so, thumbs up! Francesco mentioned (on a private chat) that there may still be two issues (or ways to improve) this PR and that he'll dig into that (and that's the reason I've added the "do-not-merge" label). He'll update the issue with his findings after he's done with the research. |
|
Also, Yesterday in the CRI-O meeting Mrunal raised that there may be another solution, based on the fact that we should be only vendoring EDITED: Mrunal pointed me to dims' PR for containerd: containerd/cri#1463 |
c78a088 to
a2718be
Compare
|
I ended up opening what may be an alternative version of this PR: #4164 |
a2718be to
7702fac
Compare
|
/retest |
…obuf The continerd/ttrpc package, used to support the runtimes of type "vm", relies on the gogo/protobuf protocol buffer implementation. Recently, google updated the golang protocol buffer implementation with a newer and backward incompatible API: https://blog.golang.org/protobuf-apiv2 The gogo/protobuf protocol has not been updated and is now incompatible with the newer golang protocol buffer implementation. Unfortunately, the containerd/ttrpc package imports also the package: google.golang.org/genproto/googleapis/rpc/status which is generated by means of the golang protocol buffer. With the newer version, the generated code is no more compatible with gogo/protobuf, leading to panic during execution of the ttrpc code. While the ttrpc package needs a proper fix, this patch brings in a fork of the containerd/ttrpc package depending upon an older version of the googleapis/rpc/status package (compiled with the older protobuf API and so compatible with the gogo/protobuf implementation) which has been forked in a custom repo too. In this way, ttrpc code will import code that is all compatible with the older protobuf specification. Signed-off-by: Francesco Giudici <[email protected]>
7702fac to
3a41397
Compare
|
Import the gogo/protobuf generated version of the gogleapis/rpc/status from the gogo/googleapis repo. Note that PR #4164 is the current candidate for fixing issue #3991 |
|
@fgiudici: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
|
As PR #4164 has been merged and issue #3991 is now closed, we don't need this anymore (at least for now). |
What type of PR is this?
/kind bug
What this PR does / why we need it:
golang protobuf has been updated to a newer implementation incompatible with the older one.
The ttrpc package relies on the gogo/protobuf implementation no more compatible with the newer golang protobuf implementation.
Until this issue is not solved in the ttrpc package, we have to ensure that dependencies imported in the ttrpc package are compatible with the older protobuf specification as we imported the newer golang protobuf in cri-o (>= 1.4.0).
The ttrpc package and its dependencies that are generated via golang protobuf have been forked to keep compatibility with the gogo/protobuf. We will stick to the forks till the issue will not be solved in the ttrpc package.
Which issue(s) this PR fixes:
Fixes #3991
Special notes for your reviewer:
This is a temporary workaround waiting for containerd/ttrpc package to be fixed. Anyway it will not be an easy fix, and may take time.
Does this PR introduce a user-facing change?