Proper handling of ACK frames and long gRPC data frames#10303
Merged
Conversation
danielkec
previously approved these changes
Jun 27, 2025
danielkec
approved these changes
Jun 30, 2025
…RPC client can read large gRPC frames.
spericas
added a commit
to spericas/helidon
that referenced
this pull request
Jul 7, 2025
…0303) * Do not ack or process an HTTP/2 SETTINGS frame with the ACK flag on. * Handle gRPC data frames delivered in two or more HTTP/2 frames in the gRPC client. * Share gRPC reading code in base class. * Add new test that verifies gRPC client can read large gRPC frames.
spericas
added a commit
to spericas/helidon
that referenced
this pull request
Jul 7, 2025
…0303) * Do not ack or process an HTTP/2 SETTINGS frame with the ACK flag on. * Handle gRPC data frames delivered in two or more HTTP/2 frames in the gRPC client. * Share gRPC reading code in base class. * Add new test that verifies gRPC client can read large gRPC frames.
barchetta
pushed a commit
that referenced
this pull request
Jul 8, 2025
* Adds support for a gRPC reflection service (#10014) * gRPC reflection service implemented as a feature. * Adds support for the other required extension requests. Some new tests. * Updates gRPC server doc describing the new reflection service. * Refactors code that handles gRPC interceptors in webserver (#10089) Refactors code that handles gRPC interceptors to properly support interception of methods regardless of how routes are set up. Fixes problems calling interceptors in MP after interceptor logic refactoring in the webserver. Loads all GrpcMpExtensions before creating the routes to ensure interceptors are registered for all routes. * Support for gRPC server metrics (#10098) Initial support for gRPC server metrics. Metrics are disabled by default. Includes new tests that verify absence of metrics when disabled. Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com> * Support for metrics in gRPC client (#10101) Initial support for gRPC client metrics. Adds some tests that verify metrics enabled and disabled. Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com> * Replaces TODOs with proper argument validation in client and service gRPC descriptors. TODOs were removed in the server code without proper argument validation. (#10112) * Updates to gRPC documentation (#10108) * Updates docs for server interceptors and metrics and also client metrics. Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com> * Adds support for gRPC reflection service version v1alpha for tools (like Postman) that don't yet support the latest v1 version. (#10122) * Fixes problems cancelling a client-streaming gRPC call (#10128) Fixes problems cancelling a client-streaming gRPC call. If a client-streaming call is cancelled before any data is sent, we must return headers before trailers. Also, is RST_STREAM frame is received, we should cancel the corresponding listener. Adds test for client-streaming method call cancellation. Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com> * Runs gRPC metric enable/disable tests in separate VMs to avoid ordering problems. (#10164) * gRPC Improvements (#10147) * Avoids some buffer copies when sending and receiving gRPC payloads. New config property to completely disable compression that can be useful for perf testing. * Sets the final CLOSED state for the stream to ensure it is properly removed from the collection of active streams for associated connection. * Report any socket exceptions (such as broken pipe) in log level TRACE not higher. * Ensures proper field synchronization if an RST stream frame is received at the HTTP/2 connection level. Improves some comments. * Adds support for new gRPC MP annotation (#10276) Adds support for a new @Grpc.Proto annotation to mark a gRPC MP method as returning the service's proto file descriptor. This is necessary when using the gRPC reflection service in Helidon. Fixes a bug in setting up interceptors in routes and makes ContextSettingServerInterceptor immutable. Some new tests. Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com> * Fixes problems converting HTTP/2 headers to Metadata and vice versa. Adds new test. (#10300) * Ensures gRPC client calls pass metadata as headers (#10301) Ensures gRPC client calls pass metadata as headers. Moves utility class from webserver-grpc to grpc-core. Adds test that shows headers and metadata properly merged in a client call. * Proper handling of ACK frames and long gRPC data frames (#10303) * Do not ack or process an HTTP/2 SETTINGS frame with the ACK flag on. * Handle gRPC data frames delivered in two or more HTTP/2 frames in the gRPC client. * Share gRPC reading code in base class. * Add new test that verifies gRPC client can read large gRPC frames. * Adds support for tracing to gRPC client (#10314) * New WebClient gRPC SPI to enable modules to add additional client interceptors. New gRPC tracing module that uses this SPI. * Adds support for gRPC tracing as a gRPC service that can be listed in config under "grpc-services". * Disable automatic lookup of all gRPC services. Now a gRPC service must be listed in the grpc-services section (or added programmatically) for it to be enabled. * Updates versions for helidon-4.2.x branch. Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com> --------- Signed-off-by: Santiago Pericas-Geertsen <santiago.pericasgeertsen@oracle.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Do not ack or process an HTTP/2 SETTINGS frame with the ACK flag on. See issues #10275 and #10234.
Documentation
None