-
Notifications
You must be signed in to change notification settings - Fork 6.4k
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
[grpc/protobuf] Update grpc to 1.65.5 and update protobuf to 5.26.1 #39800
base: master
Are you sure you want to change the base?
Conversation
@MonicaLiu0311 ready for review. |
grpc & protobuf & upbAll features are tested successfully in the following triplet:
openvinoFeatures
|
@Tradias Please resolve the conflict. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Partial Review:
This PR is claiming to update grpc
and protobuf
, but I am also seeing updates for:
utf8-range
upb
srpc
openvino
brpc
arcus
Why are these changes needed for the version update? If they are not, please split apart into their own respective PRs. I'm not saying that the changes here wouldn't be accepted just that they should be reviewed on their own.
Update to latest protobuf isn't possible because gRPC latest does not support it and it is difficult to patch (unstable upb API being the primary reason).
Can you explain why grpc
doesn't support latest protobuf
? i.e., did grpc
drop support for protobuf
or is this an upstream bug? In general, we don't accept patches that add functionality that isn't present in upstream. That is, if grpc
doesn't support latest protobuf
and that is by design then we will not add the functionality through vcpkg. We typically only accept version updates to latest barring unique circumstances so this needs a bit more explanation.
In general, there are a lot of modifications to patches here. I need a bit of context as to why you are making those changes and whether or not they have been reported to upstream. Overall, these changes look fine, but I want to make sure we aren't creating more maintenance burden here by adding support for stuff that upstream by design does not support.
@@ -1,5 +1,262 @@ | |||
diff --git a/src/brpc/esp_message.cpp b/src/brpc/esp_message.cpp |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you explain where this patch is coming from? What problem does it solve and why is it needed to update grpc
and protobuf
? In general, this patch looks upstream-able.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It addresses the breaking changes caused by the protobuf update from v4 to v5. It can certainly be upstreamed.
ErrorCollector() : _error_count(0) { } | ||
|
||
- void AddError(const std::string& filename, int line, int column, const std::string& message) override | ||
+ void RecordError(absl::string_view filename, int line, int column, absl::string_view message) override |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please explain why this patch is needed. This looks like something that is upstream-able.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It addresses the breaking changes caused by the protobuf update from v4 to v5. It can certainly be upstreamed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@JavierMatosD It's been a long time. Have you noticed?
@JavierMatosD Thank you for looking into this pr (again). The story is very similar to the previous one #35781. We are trying to force a protobuf version onto libraries that don't support it (yet) or are unmaintained. I haven't created any reports upstream and honestly don't feel like doing it, so feel free to do so.
|
72241a3
to
9240d3c
Compare
Thank you for your work on upgrading gRPC! |
Upstream "support protobuf v5" issues: |
When will this change be accepted? I need uds in windws (grpc>=1.63) |
I have started to experiment with this branch to prepare my project for this upgrade. It seems that I have hit a known problem with protobuf.
This seems the same symptom as #39459 |
@pedrolamarao You describe an issue that exists in the protobuf version on master. In the linked vcpkg issue you will find the protobuf commit that fixed it and if you check it out you can see that the fix made it into the protobuf version that this pull request introduces protocolbuffers/protobuf@f78f9c5. I also just compiled a small program with vcpkg master branch (failed as expected) and then with this branch, succeeded. In other words, it looks like you did something wrong when trying to test this branch and instead used current master branch. Possible causes:
|
@Tradias thanks, that sounds likely, sorry for the noise. |
What needs to be done to move this forward? @JavierMatosD are you able to do a second pass? |
@BillyONeal Please take a look at this PR. |
hey, buddies when will it be merged? |
@BillyONeal, @vicroms, @data-queue discussed this today. @BillyONeal - " @ras0219-msft - "It is a reimplementation of protobuf that is small, so it has independent implementation from protobuf but it is c, small, and unstable. It sounds like @BillyONeal - "Maybe @ras0219-msft - "Why was #8460 (comment) -> implies it is needed for @ras0219-msft - " @BillyONeal - "That seems to be the thing that people want." @BillyONeal - "We should delist Actions:
Questions:
Since upstream has been notified approx 3 ago, we will give them another 3 weeks to respond before we start delisting ports. |
@JavierMatosD Great conversation. This matches my knowledge of grpc, protobuf, upb ecosystem exactly. I would throw utf8-range into the mix too but I think it is OK to keep it as is for now. I have been advocating for removing upb for a while now. Seeing that I have been doing the latest gRPC updates, I know how painful it is to patch CMake support into upb and patch gRPC to use it; two things that upstream never intended for. GRPC v1.62.3 seems to be the last version to use protobuf 4.x: Look at the commit message on protobuf submodule between https://github.com/grpc/grpc/tree/v1.62.3/third_party with https://github.com/grpc/grpc/tree/v1.63.2/third_party |
clang-19 fails at compiling grpc on (1.60.0, vcpkg master) (due to a compiler warning) |
Hi, it is great job, but the question is: when could it be merged? @JavierMatosD are all your requested changes already done? |
@Tradias, please mark this PR "ready for review" when you want me to review this again. |
@JavierMatosD what is the verdict regarding |
Perhaps mark the PR as ready for review, otherwise it may not get the attention. |
@Tradias, sorry for the late response. I believe the action items requested by the team last we spoke were:
We also agreed to give upstream 3 weeks to respond before we begin delisting ports. I believe it's been 3 weeks since |
…. Add proper stage0 to upb
GRPC now uses built-in upb, tested successfully on x64-windows-static. Note that some patching is still needed to make it use the vcpkg utf8-range port. SRPC now uses official patch, build successfully on x64-windows-static. BRPC is also working on protobuf v5 support but I am waiting for it to be merged: apache/brpc#2782 |
Fixes
#37440
#29697
#38316
#37729
#30583
#40803
Upstream issues:
Ultimaker/libArcus#156
apache/brpc#2757
sogou/srpc#406
Update to latest protobuf isn't possible because gRPC latest does not support it and it is difficult to patch (unstable upb API being the primary reason).
Some ports had to be patched to support protobuf v5.
upb now has (hopefully) proper stage0 build to generate
descriptor.upb.h/c
files. Seeing that the supposedly tested-for-staleness files here: https://github.com/protocolbuffers/protobuf/tree/v25.1/upb/cmake/google/protobuf are actually stale../vcpkg x-add-version --all
and committing the result.