You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using HTTP/2 with APPLICATION_NDJSON, infinite connection hangs occur for endpoint calls when the input cardinality to a reactive stream reaches a certain size. The hangs seem to result from not consuming the data quickly enough, as removing concurrency limits on data consumption alleviates the issue.
The minimum reproducible example, as explained in the linked GitHub repository, involves more than a simple A-calls-B scenario. Specifically:
A calls B (c1) and calls B again (c2) using the output produced from c1
Points of Interest
Hangs do not occur when using APPLICATION_JSON or HTTP/1.1.
If a timeout handler is specified, it will eventually close the connection.
Increasing the concurrency level at which data is consumed to a sufficient value prevents the hangs, perhaps indicating there is a consumption deadlock whereby two resources are waiting for a condition on each other.
Using separate WebClient instances for c1 and c2 has no effect
Summary
When using HTTP/2 with APPLICATION_NDJSON, infinite connection hangs occur for endpoint calls when the input cardinality to a reactive stream reaches a certain size. The hangs seem to result from not consuming the data quickly enough, as removing concurrency limits on data consumption alleviates the issue.
The minimum reproducible example, as explained in the linked GitHub repository, involves more than a simple A-calls-B scenario. Specifically:
A calls B (c1) and calls B again (c2) using the output produced from c1
Points of Interest
Steps to Reproduce
To reproduce the issue, follow the steps provided in the minimal reproducible sample: https://github.com/samueldlightfoot/htt2-hangs/tree/main
Logs and further information is at the above GitHub link in the README.
Tested on Reactor Netty v1.1.23.
The text was updated successfully, but these errors were encountered: