-
Notifications
You must be signed in to change notification settings - Fork 62
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
Always receive "stream terminated by RST_STREAM with error code: STREAM_CLOSED" after grpc request #51
Comments
Same issue, here's the (short) code and the call:
Note: when running in
Maybe it only has to do with the way Go terminates the connection as I've tested (and received this message) only with grpcurl and ghz |
@tsloughter could this be due to the transport being insecure? |
I still don't know when I'll have time to investigate and fix this but could I get some more info, like does every request between erlang and go fail? And I realize I'm not sure if the issue is the way it is being terminated or if the issue is how grpcbox handles the termination? Like "go grpc client don't handle RST_STREAM, it will return an error, but grpcbox won't.", is this saying Go doesn't handle the RST_STREAM because it shouldn't be sent? |
Is this saying Go doesn't handle the RST_STREAM because it shouldn't be sent? Yes. #####Errors When an application or runtime error occurs during an RPC a Status and Status-Message are delivered in Trailers. In some cases it is possible that the framing of the message stream has become corrupt and the RPC runtime will choose to use an RST_STREAM frame to indicate this state to its peer. RPC runtime implementations should interpret RST_STREAM as immediate full-closure of the stream and should propagate an error up to the calling application layer. RST_STRWAM means an error, but no error occured. |
It seems to be introduced in: |
I was able to reproduce the issue with
and verify that revert of tsloughter/chatterbox@e15e56d solve the issue. |
This Issue gave us nightmare in a pre-production environment.. Thanks for identifying this, we have to revert this commit to move further. |
@shhnwz does using tsloughter/chatterbox#7 instead of reverting work for you? |
@tsloughter we are running with that pr and have not seen any issues so far. |
That was not true when running with my pr we end up leaking h2_stream procs. Will drop that for now and revert instead. |
Maybe just need to stop the process in that event handler you added in the PR? |
Yes that worked. I was thinking it would end up in the normal flow and stop. |
I think that makes more sense. Stream is in closed state, so just stop it. I wonder if the |
If tests pass I'll probably merge this and try to get a release made soon. |
So there is a test failure is why this hasn't been merged yet. I haven't been able to look at it and haven't looked at anything really in months. But I start work again on the 13th and part of that job will involve grpcbox, so I will be digging in with fixes, performance improvements and making releases again finally in the near future. |
The tests are not failing for me locally but do not know how to rerun them in gh actions. |
Both PRs fail CI with the same reason.
|
Seems to be this issue tsloughter/chatterbox#6 |
Looking into this again. I'm hitting the issue with grpcurl and kreya when trying to test a service. |
It seems chatterbox is missing a new release + grpcbox should depend on that new version before this is fixed, correct? |
@fenollp yea, mixed up my repos, hehe. I'll get those releases out soon. |
Done. |
When go grpc client or grpcbox client call gopcbox server, both see RST_STREAM in tcpdump log:
go client call:
grpcbox client call:
RST_STREAM detail:
when go grpc client or grpcbox client call go grpc server, not see RST_STREAM in tcpdump log:
go grpc call:
grpcbox call:
go grpc client don't handle RST_STREAM, it will return an error, but grpcbox won't.
go error:
grpcbox result:
My issue is: why RST_STREAM happened after the grpc response send?
The text was updated successfully, but these errors were encountered: