Skip to content

Stop reading data immediately upon request in QUIC server stream.#43332

Merged
danzh2010 merged 2 commits intoenvoyproxy:mainfrom
wang178c:quic_flow_control_fix
Feb 5, 2026
Merged

Stop reading data immediately upon request in QUIC server stream.#43332
danzh2010 merged 2 commits intoenvoyproxy:mainfrom
wang178c:quic_flow_control_fix

Conversation

@wang178c
Copy link
Contributor

@wang178c wang178c commented Feb 4, 2026

Commit Message: Stop reading data immediately upon request in QUIC server stream.

Additional Description: When readDisable is called on EnvoyQuicServerStream, it is better for EnvoyQuicServerStream to not to deliver more data, which may cause more bytes buffered and more work.

Risk Level: Low. Guarded by false runtime guard envoy.reloadable_features.quic_disable_data_read_immediately.

Signed-off-by: Haoyue Wang <haoyuewang@google.com>
@repokitteh-read-only
Copy link

CC @envoyproxy/runtime-guard-changes: FYI only for changes made to (source/common/runtime/runtime_features.cc).

🐱

Caused by: #43332 was opened by wang178c.

see: more, trace.

@wang178c
Copy link
Contributor Author

wang178c commented Feb 4, 2026

/assign @danzh2010

Signed-off-by: Haoyue Wang <haoyuewang@google.com>
Copy link
Contributor

@danzh2010 danzh2010 left a comment

Choose a reason for hiding this comment

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

@wang178c
Copy link
Contributor Author

wang178c commented Feb 5, 2026

Please also update https://github.com/envoyproxy/envoy/blob/main/source/docs/quiche_integration.md#receive-buffer to reflect this optimization.

The feature is currently guarded by FALSE_RUNTIME_GUARD. Can we defer the documentation update after we test it in prod and change the guard to RUNTIME_GUARD?

@wang178c
Copy link
Contributor Author

wang178c commented Feb 5, 2026

Thanks for the review!

@danzh2010 danzh2010 merged commit 6bf1fe7 into envoyproxy:main Feb 5, 2026
25 checks passed
shane-yuan pushed a commit to shane-yuan/envoy that referenced this pull request Feb 11, 2026
…voyproxy#43332)

Commit Message: Stop reading data immediately upon request in QUIC
server stream.

Additional Description: When readDisable is called on
EnvoyQuicServerStream, it is better for EnvoyQuicServerStream to not to
deliver more data, which may cause more bytes buffered and more work.

Risk Level: Low. Guarded by false runtime guard
envoy.reloadable_features.quic_disable_data_read_immediately.

---------

Signed-off-by: Haoyue Wang <haoyuewang@google.com>
copybara-service bot pushed a commit to google/quiche that referenced this pull request Feb 19, 2026
Notes:
1. The comment next to QuicSpdyStreamBodyManager::Clear says "Since body is buffered by QuicStreamSequencer, this method should be called when QuicStreamSequencer frees up its buffers without reading." Since QuicStream::StopReading always clears the QuicStreamSequencer, QuicSpdyStreamBodyManager should always be cleared as well.
2. Seen from the new unit test, this change is akin to QUIC layer blocking being asynchronous and application layer blocking being synchronous in Envoy (since envoyproxy/envoy#43332) and thus is unlikely to be reproducible at GFE.

Protected by FLAGS_quic_reloadable_flag_quic_clear_body_manager_along_with_sequencer.

PiperOrigin-RevId: 872573565
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.

2 participants