Skip to content

Conversation

@agrawroh
Copy link
Member

Description

The Async streamable HTTP client is supported by Envoy since long time. Using it, we can create multiple different HTTP streams to different backends at the same time and distribute requests between these backends.

This PR exposes this feature to dynamic modules. It could be used for developing MCP related dynamic modules.

Fix #42045


Commit Message: dynamic_module: add new streamable HTTP callout support
Additional Description: Add support for the Async streamable HTTP client in Dynamic Modules.
Risk Level: Low
Testing: Added Unit + Integration Tests
Docs Changes: Added
Release Notes: Added

@repokitteh-read-only
Copy link

As a reminder, PRs marked as draft will not be automatically assigned reviewers,
or be handled by maintainer-oncall triage.

Please mark your PR as ready when you want it to be reviewed!

🐱

Caused by: #42225 was opened by agrawroh.

see: more, trace.

@agrawroh agrawroh force-pushed the feat-dm-extnd branch 7 times, most recently from b498e2d to f9ea7e9 Compare November 24, 2025 22:27
Copy link
Member

@wbpcode wbpcode left a comment

Choose a reason for hiding this comment

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

Thanks so much for picking this up. One comment to the ABI to start the review. :)

@agrawroh agrawroh force-pushed the feat-dm-extnd branch 10 times, most recently from 1f1f7d3 to bc82115 Compare November 25, 2025 18:55
@agrawroh agrawroh force-pushed the feat-dm-extnd branch 2 times, most recently from 9126681 to 47e213a Compare November 25, 2025 20:44
Signed-off-by: Rohit Agrawal <[email protected]>
@repokitteh-read-only
Copy link

CC @envoyproxy/coverage-shephards: FYI only for changes made to (test/coverage.yaml).
envoyproxy/coverage-shephards assignee is @RyanTheOptimist

🐱

Caused by: #42225 was synchronize by agrawroh.

see: more, trace.

@agrawroh agrawroh marked this pull request as ready for review November 25, 2025 22:24
@agrawroh agrawroh requested a review from mathetake as a code owner November 25, 2025 22:24
Copy link
Member

@mathetake mathetake left a comment

Choose a reason for hiding this comment

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

This is so cool, thank you so much for taking this up! I am trying to think about the way to remove the necessity for "unsafe" on these pointer passing methods but yeah i think there's no way around it seems..

Copy link
Member

@wbpcode wbpcode left a comment

Choose a reason for hiding this comment

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

Thanks so much for this great contribution. The new ABI lgtm to me. And some comments to the implementation code. :)

/wait

source/extensions/filters/common/lua: 95.6
source/extensions/filters/http/cache: 95.9
source/extensions/filters/http/dynamic_forward_proxy: 94.8
source/extensions/filters/http/dynamic_modules: 95.6
Copy link
Contributor

Choose a reason for hiding this comment

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

Could we add additional tests to increase coverage?

Copy link
Member Author

Choose a reason for hiding this comment

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

Sorry, I tried my best but there are a few likes I couldn't cover.
Mostly the edge scenarios like stream not ending correctly.

I can open a follow up PR to improve the coverage by adding tests for existing uncovered lines. Hopefully that will be good enough to remove the exception.

Copy link
Contributor

Choose a reason for hiding this comment

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

Sounds good. Thanks!

Copy link
Member

@mathetake mathetake left a comment

Choose a reason for hiding this comment

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

Thank you so much for working on this. LGTM. can we add more tests to avoid having coverage exception?

@agrawroh
Copy link
Member Author

agrawroh commented Dec 2, 2025

Thank you so much for working on this. LGTM. can we add more tests to avoid having coverage exception?

Thanks! I tried my best but there are a few likes I couldn't cover.
Mostly the edge scenarios like stream not ending correctly.

I can open a follow up PR to improve the coverage by adding tests for existing uncovered lines. Hopefully that will be good enough to remove the exception.

Signed-off-by: Rohit Agrawal <[email protected]>
@mathetake mathetake merged commit 504874c into envoyproxy:main Dec 2, 2025
25 checks passed
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.

dynamic module: new streamable HTTP callout support

4 participants