Skip to content

xDS: Ext proc client interceptor implement grfc updates - #13105

Open
kannanjgithub wants to merge 10 commits into
grpc:masterfrom
kannanjgithub:ext-proc-client
Open

kannanjgithub wants to merge 10 commits into
grpc:masterfrom
kannanjgithub:ext-proc-client

Conversation

@kannanjgithub

Copy link
Copy Markdown
Contributor

Implement the recent gRPC updates via 5 commits:

  1. xds: treat ext_proc stream OK termination without drain as non-OK status (7628b0d)
  2. xds: cap flow control window at 64-bit signed integer limits to prevent overflow (a2887c6)
  3. xds: require processing_mode in ExternalProcessor filter config (7208ff8)
  4. xds: default to UNKNOWN status when ImmediateResponse status is unset (ca79e36)
  5. xds: enforce directional and configuration ordering for ext_proc client interceptor (98e8d20)

Only add RawMessageClientInterceptor to the interceptor chain in XdsNameResolver
when either GRPC_EXPERIMENTAL_XDS_EXT_PROC_ON_CLIENT or
GRPC_EXPERIMENTAL_XDS_EXT_PROC_ON_SERVER is true. This prevents
RawMessageClientInterceptor from corrupting method descriptors and causing
empty payloads on retry attempts for regular xDS channels.

Fixes grpc#13010

TAG=agy
CONV=56c87717-243d-4f12-af9e-c532e509892a
Update ext_proc client interceptor to treat OK termination without drain as non-OK status regardless of whether messages have started being sent to the ext_proc server, in accordance with the updated gRFC specification.

TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc0
…nt overflow

Use LongMath.saturatedAdd when processing ServerWindowUpdate and replenishing
sidestream windows to prevent integer overflow from turning windows negative.

TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc0
Reject xDS filter configuration if processing_mode is unset and fix checkstyle issues.

TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc0
TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc0
…nt interceptor

Updates ExternalProcessorClientInterceptor to enforce directional legal
ordering and filter configuration rules according to the updated ext_proc
gRFC specification:
- Ensure legal ordering in client-to-server and server-to-client directions.
- Fail with protocol error when ext_proc sends events the filter is not
  configured to send.
- Allow ext_proc to insert messages before the filter has sent any.
- Disallow events after end-of-stream.
- Propagate protocol error cause as streamFailureCause in the RPC status.

TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc0
Add comprehensive tests for directional and configuration order validation
in ExternalProcessorClientInterceptor. Fix order check so clientEndOfStreamReceived
is evaluated before clientHeadersReceived (and trailers/EOS before headers).

TAG=agy
CONV=581f86a6-097d-44a2-9d6e-6f9d2e83cbc0
@kannanjgithub
kannanjgithub requested a review from sauravzg October 9, 2026 07:54

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant