Skip to content

Calls fail with Nginx, even with Transparent Retries #10533

Open
@danieltahara

Description

@danieltahara

I have a client that invokes a gRPC service through Nginx, and so I have to contend with the abrupt GOAWAYS sent by nginx every keepalive_requests.

My understanding is that transparent retry should handle this case. Originally I was on 1.54.1 and saw I was hitting: #10011 so I upgraded to 1.54.2. I'm still getting errors, however.

What confuses me a bit is that I see the original retry code was added here: a83f67a and that there was a subsequent update for netty: 431fb02

I did some more tracing and now it seems like I'm hitting this path: https://github.com/grpc/grpc-java/blob/master/netty/src/main/java/io/grpc/netty/NettyClientHandler.java#L846

Why are we returning a code REFUSED instead of MISCARRIED? Or at a higher level, why doesn't a REFUSED stream get infinite transparent retries? https://github.com/grpc/grpc-java/blame/master/core/src/main/java/io/grpc/internal/RetriableStream.java#L937

And secondarily, how do we end up in the situation where we're getting GOAWAYs on sent streams? It seems like something to do with http2_max_concurrent_streams > nginx's keepalive_requests

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions