-
Notifications
You must be signed in to change notification settings - Fork 420
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
Update vendored gRPC-core to v1.19.1 #417
Conversation
This commit also fixes a few minor problems in the vendoring scripts and updates a call in shim/channel.c to use a modified API.
@MrMage Do the failures on the Linux tests mean anything to you? So far I've I only directly tested on my Mac; I can try on a Linux VM next. |
@timburks thank you for looking into this! The only test failure I can find on Linux CI is this:
That does not ring a bell I'm afraid. It might be that the server is simply too fast at sending all responses. You could try working around that by using a string with way more words in
or replacing the provider with one that sleeps for, say, 10ms before starting to send out replies. (Example for more strings: In terms of https://github.com/grpc/grpc/blob/master/src/objective-c/BoringSSL-GRPC.podspec, I think that file is generated with parameters obtained from running one of the templated gRPC vendoring script generator. I think we are running a similar generator to generate our vendoring script, so in theory the complexity of that file should not deter us, given that the codegen creating that file should also be able to generate our vendoring scripts. (I might be missing something.) |
P.S.: When |
…re the server finishes streaming.
I think https://github.com/grpc/grpc-swift/blob/master/SwiftGRPC.podspec will also need to be updated, as the new shim would be incompatible with old versions of gRPC-Core. |
@MrMage after I slowed the server by sending more strings (100 instead of three), the tests now pass, but I notice 99 new error messages "expand error: unknown" which I think are coming from the server after the client canceled. I think these need to be fixed/cleaned up, but maybe in a separate PR to keep this one from getting too complicated. What do you think? |
@MrMage @rebello95 Could we update the podspec in a separate PR? |
In that case, it might simply be easier to implement a custom
EchoProvider , just with a short delay and without send error logging.
I think that should be fine; users will only be affected once we push a new Podspec. It's just a two-line change, though. |
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.
@timburks as far as I can tell, everything looks good, and I trust that you did the vendoring correctly. However, I know that @rebello95 had issues vendoring gRPC-Core v1.19, so it might be useful to elaborate on why it worked for you with seemingly only minor changes to our scripts.
I would also still suggest creating a custom provider subclass as outlined in #417 (comment).
@MrMage Line 81 of @rebello95's updated scripts/vendor-boringssl.sh contained an incorrect path that caused the script to fail to update a header file. The dropped update caused the boringssl build to expect a large number of functions to be linked in from assembly language source files, so resulting builds would fail at link time with a large number of unresolved symbols. The vendor-grpc script also needed to be updated to make the nanopb headers visible to Swift Package Manager; when they couldn't be found, a missing "pb.h" error was breaking builds. I wouldn't mind adding the custom EchoProvider, but expect it might still produce at least some superfluous error messages if it started sending after the client had closed the connection early. If we look closer, we might decide that these error messages shouldn't be printed because they could be part of normal operation. |
Thanks for the elaboration, much appreciated!
The error logging is in the
If we use a (simpler) custom subclass for these tests that does not contain these logging calls, no errors should show up in the log. |
@MrMage If you're satisfied with my change to the tests, please merge this. Thanks for reviewing! |
@timburks, sorry but I don't think changing |
@MrMage OK, I'm fine with your preference. Please go ahead and do that if you have time. |
… received." This reverts commit d99e82a.
Sorry I missed this message. I think we should update it as part of this PR and make sure it builds/passes lints ( |
I think this does not matter too much, provided the two do not get tagged. However, I would definitely suggest updating the Podspec as close to updating the vendored code as possible. @timburks what would be your reasoning to not update the Podspec in this PR? Could it be included? |
There was no podspec published for gRPC-Core v1.19.1 but it has no changes in the C layer: vendoring v1.19.0 yields the same code as vendoring v1.19.1.
@MrMage @rebello95 OK, I've also updated the podspec.
|
I updated the podspec with this command: The warnings are in the vendored gRPC-Core code (all in From the following warning (produced during validation), we will need to add
|
Sounds good, thanks @timburks! |
Sounds good! I think we can simply specify a Swift version of 4.2 with the next Podspec update. |
@timburks the "Release" on GitHub looks different from the other ones: https://github.com/grpc/grpc-swift/releases. @rebello95, is there a shortcut to including the commit log on the GitHub release? |
@MrMage generally I use something like this:
|
This commit also fixes a few minor problems in the vendoring
scripts and updates a call in shim/channel.c to use a modified API.