Skip to content

Generated client stubs for bidirectional streaming service does not appear to exert back-pressure on send #581

Open
@SoftMemes

Description

I have a bidirectional streaming service and want the client to block rather than buffer when producing requests. According to #385, this should be supported, but this does not appear to be the case.

I have been able to test this by pausing the remote gRPC service, and observe that the client still pulls from the request flow, rather than stop consuming from the flow until messages have been received by the remote.

I have traced this to https://github.com/grpc/grpc-kotlin/blob/master/stub/src/main/java/io/grpc/kotlin/ClientCalls.kt#L249. I note that there's a check here for readiness, but this appears to be checked only once - there is no way for the readiness instance to go from "ready" to "not ready", so the streaming sender currently never suspends.

Is this intended/expected behaviour?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions