Skip to content

fix(epp): add opt-in gateway protocol compatibility - #13700

Open
Oxygen56 wants to merge 2 commits into
ai-dynamo:mainfrom
Oxygen56:fix/13686-gateway-protocol-compatibility
Open

fix(epp): add opt-in gateway protocol compatibility#13700
Oxygen56 wants to merge 2 commits into
ai-dynamo:mainfrom
Oxygen56:fix/13686-gateway-protocol-compatibility

Conversation

@Oxygen56

@Oxygen56 Oxygen56 commented Aug 23, 2026

Copy link
Copy Markdown

Overview:

Add an opt-in compatibility mode for gateways such as agentgateway that stream request bodies without waiting but omit the corresponding ext_proc capability flag. Strict validation remains the default so gateways that really wait for the header response still fail fast instead of deadlocking.

Details:

  • Add DYN_EPP_ALLOW_MISSING_SEND_BODY_WITHOUT_WAITING, defaulting to false.
  • When enabled, waive only the missing capability flag; request and response body modes must still both be FULL_DUPLEX_STREAMED.
  • Enable the compatibility mode in the repository's agentgateway on-ramp manifest, where the gateway's request-body behavior is known.
  • Emit a startup warning and document the safety boundary for operators.
  • Add focused policy and gRPC stream regression coverage for strict and compatibility behavior.

Where should the reviewer start?

Start with the protocol validation and regression coverage in deploy/inference-gateway/ext-proc/src/server.rs, then review the opt-in wiring in deploy/inference-gateway/ext-proc/src/runner.rs and the affected deployment setting in deploy/inference-gateway/ext-proc/examples/onramp/agg.yaml.

Validation

  • A source-bound before/after regression using the affected on-ramp deployment proved that the reported configuration is rejected before the deployment setting and accepted after it, while unsafe body modes remain rejected.
  • The complete dynamo-ext-proc test suite passed, including the gRPC compatibility stream regression.
  • Rust formatting and strict lint checks passed; the updated multi-document Kubernetes manifest parsed successfully and the diff has no whitespace errors.
  • No live agentgateway/vLLM cluster was available; the focused checks exercise the exact deployed setting and EPP stream boundary without one.

Related Issues

🔗 This PR is linked to an issue:

Signed-off-by: Oxygen56 <jiangth99@163.com>
@Oxygen56
Oxygen56 requested review from a team as code owners August 23, 2026 21:41
@copy-pr-bot

copy-pr-bot Bot commented Aug 23, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@Oxygen56
Oxygen56 deployed to external_collaborator August 23, 2026 21:41 — with GitHub Actions Active
@Oxygen56
Oxygen56 deployed to external_collaborator August 23, 2026 21:41 — with GitHub Actions Active
@github-actions

Copy link
Copy Markdown
Contributor

👋 Hi Oxygen56! Thank you for contributing to ai-dynamo/dynamo.

Just a reminder: The NVIDIA Test Github Validation CI runs an essential subset of the testing framework to quickly catch errors.Your PR reviewers may elect to test the changes comprehensively before approving your changes.

🚀

@github-actions github-actions Bot added external-contribution Pull request is from an external contributor fix documentation Improvements or additions to documentation labels Aug 23, 2026

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 849e08d4-ee46-4474-913c-32685215e417

📥 Commits

Reviewing files that changed from the base of the PR and between 004cd02 and d10e3cf.

📒 Files selected for processing (3)
  • deploy/inference-gateway/ext-proc/DEVEL.md
  • deploy/inference-gateway/ext-proc/src/runner.rs
  • deploy/inference-gateway/ext-proc/src/server.rs

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


Walkthrough

Changes

Protocol compatibility override

Layer / File(s) Summary
Server option and protocol validation
deploy/inference-gateway/ext-proc/src/server.rs
ExtProcServer adds an opt-in compatibility setting. Validation accepts a missing streaming flag only when both body modes are full-duplex.
Runtime configuration wiring
deploy/inference-gateway/ext-proc/src/runner.rs, deploy/inference-gateway/ext-proc/DEVEL.md
The runner reads DYN_EPP_ALLOW_MISSING_SEND_BODY_WITHOUT_WAITING, logs when enabled, and configures the server. Documentation records the setting and its disabled default.
Compatibility validation coverage
deploy/inference-gateway/ext-proc/src/server.rs
Tests cover strict rejection, invalid body modes, compatibility-mode streams, and successful request routing.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to d10e3

This adds an opt-in gateway compatibility mode while keeping strict validation as the default, limiting the behavior change to explicitly enabled deployments. No actionable merge-blocking risk remains beyond normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The changes address issue #13686 by adding opt-in compatibility for full-duplex gateways while preserving strict validation by default.
Out of Scope Changes check ✅ Passed The documentation, runtime wiring, validation changes, and regression tests all support the linked issue and stated objectives.
Docstring Coverage ✅ Passed Docstring check was indeterminate for this PR — some files could not be analyzed in time. Not blocking.
Description check ✅ Passed The description includes all required template sections, explains the compatibility mode, identifies review starting points, and links issue #13686.
Title check ✅ Passed The title clearly and concisely describes the opt-in gateway protocol compatibility change.

Comment @coderabbitai help to get the list of available commands.

Signed-off-by: Oxygen56 <jiangth99@163.com>
@Oxygen56
Oxygen56 deployed to external_collaborator August 24, 2026 04:34 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation external-contribution Pull request is from an external contributor fix size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Standalone Rust EPP fails with agentgateway because ProtocolConfiguration misses send_body_without_waiting

1 participant