-
Notifications
You must be signed in to change notification settings - Fork 94
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
Connection reset talking to a server written with tonic (rust) when using IPv6 #197
Comments
Hello. Thanks for the detailed report. I found the issue. |
BTW, what are the reasons to replace |
Cool, thanks for the fix and for the explanation! We are not happy with grpcio ill type hints and general unpythonic design. We got a couple of bugs related to this and found out betterproto and decided to give it a go, which leaded us to grpclib. Would you not recommend to switch? |
BTW, are you planning to release the fix soon? |
I can issue a release candidate any time soon. And I want to fix one more issue to make a proper release. |
Great, thanks! |
BTW, we could verify the fix works for us. Thanks again! A release will be highly appreciated. Also, I'm still curious about why did you asked why are we looking to swtich from 😇 |
Issued release candidate: https://pypi.org/project/grpclib/0.4.8rc2/
This project was created mostly because |
Thanks for the rc! Sorry to continue with the off-topic, I hope it is OK, but it is very interesting for me to learn as much as possible for considering the switch. So basically I arrived indirectly to My main issue with Is evident that when For example methods in the generated grpc stub are not marked as async, so you can call them without await and get no error from So my question is, is |
I don't know 🤷🏻♂️
It is used in production but it is not actively developed, it is kinda in maintenance mode unless there will be contributions from the community. |
Thanks for all the info. |
There are a few problems with grpcio, the major ones being that it doesn't provide a wheel for alpine arm64(takes a lifetime to compile on some github runner) and that it forces you to have an authorized certificate. server-side had some bugs too which I haven't dig any further. both are issued in their repo but they don't have much priority for these. |
Hello, and thanks for the great library. We are currently trying out it to see if we replace our use of grpcio and are having an issue when using it to connect to a server written with tonic and using IPv6 (with IPv4 it works as expected).
grpcio
works fine, and it's what we've been using for a while.Since this is an interaction issue, I'm not certain if grpclib is to blame, I guess it could be
tonic
orh2
for example, but from all the involved projects this one seems to be the less mature, so I will take my chances here first, but please let me know if the issue is in another project to I can report it where appropriate.Reproducing
Tip
The same instructions with all the code ready to be tested is available, as well as the network captures, at: https://github.com/llucax/grpclib-bug
Here is the minimum way to reproduce the issue I've found:
Run the server
Run the client
Using
grpcio
instead workspython -m pip install grpcio protobuf python -m grpc_tools.protoc -I .. --python_out=. --grpc_python_out=. ../helloworld.proto # create grpcio_client.py
Running it:
Using IPv4 also works
If we make the server listen to 127.0.0.1 instead, and connect to it, both
grpclib
andgrpcio
work.Files
helloworld.proto
helloworld-tonic/Cargo.toml
helloworld-tonic/build.rs
helloworld-tonic/src/server.rs
client/grpclib_client.py
client/grpcio_client.py
Captures
Here are
pcapng
captures using IPv6 and IPv4 with both the grpclib and grpcio client (renamed to.log
because dumb GitHub doesn't allow attaching files named.pcapng
.The text was updated successfully, but these errors were encountered: