Skip to content

Fix HTTP/2 codec flow control re-entrancy - #6360

Merged
vietj merged 1 commit into
masterfrom
fix/http2-codec-flow-control-reentrance
Sep 14, 2026
Merged

vietj merged 1 commit into
masterfrom
fix/http2-codec-flow-control-reentrance

Conversation

@vietj

@vietj vietj commented Sep 14, 2026

Copy link
Copy Markdown
Member

Motivation:

VertxHttp2ConnectionHandler.writeData() explicitly called
writePendingBytes() after encoding a data frame. When a stream's
onWritabilityChanged() drained its outbound queue synchronously, the
resulting writeData() re-entered the flow controller, triggering
cascading writability notifications across other streams.

Modifications:

Remove the explicit writePendingBytes() call from writeData(). It is
redundant: flush() already calls writePendingBytes() with built-in
re-entrancy protection (inFlush/flushAgain guard).

Result:

No more flow controller re-entrancy during writability notifications.

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

Motivation:

VertxHttp2ConnectionHandler.writeData() explicitly called
writePendingBytes() after encoding a data frame. When a stream's
onWritabilityChanged() drained its outbound queue synchronously, the
resulting writeData() re-entered the flow controller, triggering
cascading writability notifications across other streams.

Modifications:

Remove the explicit writePendingBytes() call from writeData(). It is
redundant: flush() already calls writePendingBytes() with built-in
re-entrancy protection (inFlush/flushAgain guard).

Result:

No more flow controller re-entrancy during writability notifications.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vietj vietj added this to the 5.2.0 milestone Sep 14, 2026
@vietj vietj added the bug label Sep 14, 2026
@vietj vietj self-assigned this Sep 14, 2026
@vietj
vietj merged commit 0569341 into master Sep 14, 2026
8 checks passed
@vietj
vietj deleted the fix/http2-codec-flow-control-reentrance branch September 14, 2026 09:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant