[
https://issues.apache.org/jira/browse/CXF-9059?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jamie Mark Goodyear updated CXF-9059:
-------------------------------------
Description:
HttpConduit should flush output stream ahead of closing connections when
HttpClient is autocloseable.
When running WebClient in a load test (single host) we'll observe low
throughput.
When we adjust the HttpConduit to flush output stream ahead of connection
close, we observe significant throughput improvement.
The key issue being addressed here is ephemeral port usage. Once all available
ports are in use, the clients are unable to send more messages.
Controlling ephemeral port usage means the client can more often send messages
to the server-side.
Given this appears to affect just autocloseable HttpClient, we select to flush
the output stead only when the JVM provides the autocloseable HttpClient
variety.
AbstractConduit:
finally {
OutputStream os = msg.getContent(OutputStream.class);
// Java 21 may hang on close, we flush stream to help close them out.
if (os != null && AutoCloseable.class.isAssignableFrom(HttpClient.class))
{. os.flush(); }
super.close(msg);
}
was:
HttpConduit should flush output stream ahead of closing connections when
HttpClient is autocloseable.
When running WebClient in a load test (single host) we'll observe low
throughput.
When we adjust the HttpConduit to flush output stream ahead of connection
close, we observe significant throughput improvement.
Given this appears to affect just autocloseable HttpClient, we select to flush
the output stead only when the JVM provides the autocloseable HttpClient
variety.
AbstractConduit:
finally {
OutputStream os = msg.getContent(OutputStream.class);
// Java 21 may hang on close, we flush stream to help close them out.
if (os != null && AutoCloseable.class.isAssignableFrom(HttpClient.class))
{.
os.flush();
}
super.close(msg);
}
> HttpConduit should flush output stream ahead of closing connections when
> HttpClient is autocloseable
> ----------------------------------------------------------------------------------------------------
>
> Key: CXF-9059
> URL: https://issues.apache.org/jira/browse/CXF-9059
> Project: CXF
> Issue Type: Improvement
> Components: JAX-RS
> Affects Versions: 4.1.0
> Reporter: Jamie Mark Goodyear
> Priority: Major
> Fix For: 4.1.0
>
>
> HttpConduit should flush output stream ahead of closing connections when
> HttpClient is autocloseable.
> When running WebClient in a load test (single host) we'll observe low
> throughput.
> When we adjust the HttpConduit to flush output stream ahead of connection
> close, we observe significant throughput improvement.
> The key issue being addressed here is ephemeral port usage. Once all
> available ports are in use, the clients are unable to send more messages.
> Controlling ephemeral port usage means the client can more often send
> messages to the server-side.
> Given this appears to affect just autocloseable HttpClient, we select to
> flush the output stead only when the JVM provides the autocloseable
> HttpClient variety.
>
> AbstractConduit:
> finally {
> OutputStream os = msg.getContent(OutputStream.class);
> // Java 21 may hang on close, we flush stream to help close them out.
> if (os != null && AutoCloseable.class.isAssignableFrom(HttpClient.class))
> {. os.flush(); }
> super.close(msg);
> }
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)