Correctly propagate failures while update the flow-controller to the …#9664
Correctly propagate failures while update the flow-controller to the …#9664normanmaurer merged 3 commits into4.1from
Conversation
…multiplexed channel Motivation: We may fail to update the flow-controller and in this case need to notify the stream channel and close it. Modifications: Attach a future to the write of the update frame and in case of a failure propagate it to the channel and close it Result: Fixes #9663
|
@ti2ger92 PTAL |
|
This still needs a test case.... |
codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java
Outdated
Show resolved
Hide resolved
codec-http2/src/main/java/io/netty/handler/codec/http2/AbstractHttp2StreamChannel.java
Outdated
Show resolved
Hide resolved
|
This seems fine to me but I'm having a hard time figuring out why it solves the core issue in #9663 which is that it appears we've 'processed' more bytes than we received. |
|
@bryce-anderson I am still trying to understand that as well 🤦♂ |
|
Sorry for the delay, but I was able to get the latest branch imported and rerun. It doesn't seem to resolve our issue, a WINDOW_UPDATE is still not sent back. |
7798d13 to
dd7f6ae
Compare
|
@bryce-anderson alright ... I found out why it fixed the problem and re-factored to still batch the window update writes. The problem was some re-entrancy problem. See the comments in the code. |
|
@ti2ger92 please provide a standalone reproducer (netty only). Keep in mind that window-updates will only be send when really needed (the window was used almost completely ). |
|
@normanmaurer , when the change you made is applied to our system, our use case seems OK. I think you fixed it 🎉🎊🎉🏁🎉 Can you clarify how the gist I uploaded should be reduced further? |
|
@ti2ger92 a testcase / reproducer that only uses netty would be nice :) |
|
@ti2ger92 thanks for testing it |
…multiplexed channel
Motivation:
We may fail to update the flow-controller and in this case need to notify the stream channel and close it.
Modifications:
Attach a future to the write of the update frame and in case of a failure propagate it to the channel and close it
Result:
Fixes #9663