Open akka-ci opened 8 years ago
@jrudolph , you wrote that it doesn't work any more. Do you know the akka-http version for which it worked? Thanks for the great work and issue tracking.
Bump, received some feedback based on which we might want to work on this sooner. (Not required for 3.0)
Here's a previous PR on akka that tried to fix it but that wasn't merged: https://github.com/akka/akka/pull/21392
@jrudolph: The issue is still open. Can you please provide an update? Is it still broken and disabled? Is it broken only for request level api, or for the host level api as well? This is a fairly important feature of HTTP. If it is still broken, would it make sense to remove it from the docs?
It's still broken and it might make sense to remove it from the docs for now.
This bug, and the docs, need to be updated, for two reasons (all this applies to Akka http version 10.1.12):
But the docs claim that "# Client-side pipelining is not currently supported. See https://github.com/akka/akka-http/issues/32"
I've been confused about this before as well, but I think you've got the terminology mixed up here.
I can see it reusing connections.
The 'reusing connections' HTTP feature is called 'keep-alive' (and driven by the "Connection: keep-alive" header), and is indeed supported.
'Pipelining' is a related but different feature: it allows sending multiple requests on the same connection without first waiting for the results. In the happy scenario's that could result in improved latency/parallelism/throughput, but it also means if there's one slow response it can delay all the requests still in the pipeline, and thus ending up hurting latency/throughput. This is generally called 'head-of-line blocking'
Issue by jrudolph Monday Sep 05, 2016 at 12:39 GMT Originally opened as https://github.com/akka/akka/issues/21368
HTTP pipelining doesn't work any more in the low-level client-side implementation.
We do not seem to have any tests that exercise that pipelining actually works over the wire.
This test (to be added in LowLevelOutgoingConnectionSpec) fails on the last
expectWireData
:since
(which is not surprising since fusing changed all kinds of buffering behavior).
In the commit where it worked the last time, I tried a similar test:
which will fail only on the 49th request when backpressure kicks in (but where and why?).
In ConnectionPoolSpec, we should have these additional tests:
When the issue has been fixed, changes from #21316 to PoolSlot need to be revisited to see if everything still works (should also be caught by the new tests).