-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
Tracking Issue for (Call|ServerCall)StreamObserver being Experimental. #1788
Comments
The Is the api good enough to use on product env. ? This API is very useful for our project. But I need grpc-team to confirm. Thanks. @ejona86 |
The APIs are functional but we still reserve the right to change the API. Once there have been some users and agreement that the APIs are working well then we would remove the annotation. I'm not quite settled with |
@ejona86 Do you have any further updates on making this non experimental? We use this API in the cloud spanner client library and it has worked well for us so far. But this being experimental prevents our client from going GA. |
@vkedia, no I don't. This depends on stabilizing ClientCallStreamObserver and I think there are some issues that need to be resolved for client vs server APIs. |
API discussion notes for disableAutoInboundFlowControl: Names: I'm interested in eventually adding the auto/implicit request() calls to ClientCall/ServerCall (but it would be opt-in). That influenced people's preference for name (e.g., moved a vote from useExplicitRequest to setAutoRequest) No clear winner. Will loop back around to it. |
requestOnMessage? |
This commit prevents ClientCalls from making an initial request for response messages when the user provides a ClientResponseObserver that has disabled auto inbound flow control by calling ClientCallStreamObserver.disableAutoInboundFlowControl() in beforeStart. The previous behaviour was confusing and undersirable for observers trying to implement their own flow control, as values were produced before they were requested. This behaviour was mentioned in grpc#1788#issuecomment-260898948. The initial requests are still made for ResponseObservers that haven't disabled auto inbound flow control.
This commit prevents ClientCalls from making an initial request for response messages when the user provides a ClientResponseObserver that has disabled auto inbound flow control by calling ClientCallStreamObserver.disableAutoInboundFlowControl() in beforeStart. The previous behaviour was confusing and undersirable for observers trying to implement their own flow control, as values were produced before they were requested. This behaviour was mentioned in grpc#1788 (comment) The initial requests are still made for ResponseObservers that haven't disabled auto inbound flow control.
This commit prevents ClientCalls from making an initial request for response messages when the user provides a ClientResponseObserver that has disabled auto inbound flow control by calling ClientCallStreamObserver.disableAutoInboundFlowControl() in beforeStart. The previous behaviour was confusing and undersirable for observers trying to implement their own flow control, as values were produced before they were requested. This behaviour was mentioned in grpc#1788 (comment) The initial requests are still made for ResponseObservers that haven't disabled auto inbound flow control.
API discussion notes: |
Held:
|
@ejona86 does |
@carl-mastrangelo, we would not explicitly make it behave differently for unary (like the current API). Some parts may break down due to other parts of the API. For example, unary for servers will receive the request (as an argument) before having an opportunity to call |
#6807 added disableAutoRequestWithInitial. We made decisions on that not considering server-side. api-review decision:
Adding release blocker just so it doesn't slip through the cracks for this release, but we wouldn't actually delay the release for it. |
Is this feature still experimental? 1.29.1 source code still claims this to be experimental. We are only now beginning to use gRPC in our project and want to know if this feature is recommended or not. |
This feature is still experimental. It is "production ready" but the precise API is seeing changes. It is now rapidly approaching stabilization. In v1.30 (being released today) disableAutoInboundFlowControl is being replaced with disableAutoRequest (both APIs available simultaneously). I expect some minor tweaks to edge cases for disableAutoRequest, things that wouldn't impact most people, in v1.31. But we may stabilize the important parts of the API in v1.31. In our typical fashion, we'll leave the old API in-place for a while to ease migration. |
Specific usages:
CallStreamObserver
ServerCallStreamObserver
The text was updated successfully, but these errors were encountered: