grpc / grpc-dotnet

gRPC for .NET
Apache License 2.0
4.22k stars 776 forks source link

INTERNAL: Internal error Rst Stream above okhttp 1.47.1 version #2399

Open polingsky opened 8 months ago

polingsky commented 8 months ago

What version of gRPC-Java are you using? 1.47.1

What is your environment? for Android, grpc verison v1.47.1 Tested with Android 6 to Android 14

app client ManagedChannel = OkHttpChannelBuilder.forAddress(TLS_HOST, TLS_PORT) .overrideAuthority(TLS_HOST) .sslSocketFactory(socketFactory) .maxInboundMetadataSize(Integer.MAX_VALUE) .maxInboundMessageSize(20 1024 1024) .idleTimeout(2, TimeUnit.MINUTES) .build();

Server side .net 2.61.0

What did you expect to see? I expect to be able to reuse the same ManagedChannel for each grpc call. But it will somtimes fail and trigger INTERNAL: Internal error Rst Stream above okhttp 1.46.1 version (1.47.1 to 1.62.2). This error not happend below okhttp 1.46.1 version (1.35.0 to 1.46.1)

What did you see instead? INTERNAL: Internal error Rst Stream

On Android client side INTERNAL: Internal error Rst Stream|Status{code=INTERNAL, description=Internal error Rst Stream, cause=null}

On .net server side No error

ejona86 commented 8 months ago

https://github.com/grpc/grpc-java/issues/11051 is the companion bug for grpc-java. There's not much to go on for what could be causing this. I looked through the changes in grpc-java and nothing jumped out. What are the various things that could trigger a RST_STREAM(INTERNAL) in grpc-dotnet? Or is there logging that could be enabled?

JamesNK commented 8 months ago

You can enable server-side logging. Instructions here: https://learn.microsoft.com/en-us/aspnet/core/grpc/diagnostics?view=aspnetcore-8.0#grpc-services-logging

Getting full information about the HTTP error likely requires capturing most logs, e.g. trace level for Grpc and Microsoft logs (HTTP/2 runs in the underlying Microsoft Kestrel server).