HTTP/2 UniformStreamByteDistributor has an infinite loop problem when transferring content that exceeds 2 GB.
See original GitHub issueExpected behavior
no infinite loop
Actual behavior
HTTP/2 UniformStreamByteDistributor has an infinite loop problem when transferring content that exceeds 2GB.
-
Since there is a frame and windowSize is greater than 0, writing 0 bytes is infinitely repeated.
-
Workaround : Add flow controller so that HTTP/2 stream pending bytes do not exceed the integer(pendingBytes, streamableBytes).
Steps to reproduce
Use curl with limit-rate to request more than 2Gbytes of content In multiple terminal(More than 6 terminals)
curl -v https://localhost/3gbytes.bin -o/dev/null --http2 --insecure --limit-rate 1M
Minimal yet complete reproducer code (or URL to code)
Netty version
netty-4.1.12.Final
JVM version (e.g. java -version
)
#java -version java version “1.8.0_131” Java™ SE Runtime Environment (build 1.8.0_131-b11)
OS version (e.g. uname -a
)
uname -a Linux sunggonsong 2.6.32-696.13.2.el6.x86_64 #1 SMP Thu Oct 5 21:22:16 UTC 2017 x86_64 x86_64 x86_64 GNU/Linu
Issue Analytics
- State:
- Created 6 years ago
- Comments:8 (8 by maintainers)
Top GitHub Comments
As expected, there is no infinite loop. @Scottmitch thanks 😃
@Scottmitch Thank you. I’ll test it and share the results.