-
-
Notifications
You must be signed in to change notification settings - Fork 15.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DefaultHttp2RemoteFlowController not re-visiting nodes that still have streamable bytes #4266
Comments
@nmittler - FYI |
This is also related to #4242 |
@Scottmitch - Could you give an example for when this would happen? I haven't had this happen to me yet when testing HTTP/2 with Chrome/FF. |
+1 @Scottmitch as discussed offline, the first thing we need is a new test in DefaultHttp2RemoteFlowControllerTest that demonstrates this. |
@nmittler - On it. |
@blucas - This issue was really the root cause of the issue #4242 you reported. However the fix for #4258 (which is also necessary for other reasons) should mask the negative effects which may result from this issue. I think the only "visible" effects from this should be extra tree traversal(s) to make sure all bytes are written. |
Motivation: DefaultHttp2RemoteFlowController's allocation algorithm may not allocate all bytes that are available in the connection window. If the 'fair share' based upon weight is not fully used by sibling nodes it was not correctly re-distributed to other sibilings which may be able to utilize part / all of that share. Modifications: - Add a unit test which demonstrates the issue. - Modify the allocation algorithm to ensure all available bytes are allocated. Result: Fixes netty#4266
Motivation: DefaultHttp2RemoteFlowController's allocation algorithm may not allocate all bytes that are available in the connection window. If the 'fair share' based upon weight is not fully used by sibling nodes it was not correctly re-distributed to other sibilings which may be able to utilize part / all of that share. Modifications: - Add a unit test which demonstrates the issue. - Modify the allocation algorithm to ensure all available bytes are allocated. Result: Fixes #4266
Fixed by #4282 |
The allocation algorithm may not distributed all the available bytes even though the streams may be able to use all the bytes. This is caused by the children that have streamable bytes not being considered hungry because the
nextConnectionWindow
has collapsed.Also related to DefaultHttp2RemoteFlowController not taking into account the streamable bytes of peers.
The text was updated successfully, but these errors were encountered: