Dmitry Murashenkov created CXF-8138:
---------------------------------------
Summary: Spurious stream closed error if http keep alive enabled
Key: CXF-8138
URL: https://issues.apache.org/jira/browse/CXF-8138
Project: CXF
Issue Type: Bug
Affects Versions: 3.3.3
Reporter: Dmitry Murashenkov
I have a very complex load test with CXF, which sometimes results in several
CXF requests failing:
Caused by: java.io.IOException: Stream closed.
at java.net.AbstractPlainSocketImpl.available(AbstractPlainSocketImpl.java:470)
at java.net.SocketInputStream.available(SocketInputStream.java:259)
at java.io.BufferedInputStream.available(BufferedInputStream.java:410)
at sun.net.www.MeteredStream.available(MeteredStream.java:170)
at java.io.FilterInputStream.available(FilterInputStream.java:168)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.handleResponse(ClientProxyImpl.java:886)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:786)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:238)
... 52 common frames omitted
Setting -Dhttp.keepAlive=false fixes this problem. Not sure if the bug is in
CXF or JDK.
When looking at tcpdump - the traffic is ok: both request and 201 response can
be seen in dump, but seems response is not getting processed and exception is
raised.
In all exception cases - this was not the first request in this connection, but
on the other hand there are tons of other connections with several requests in
them without any problems.
Exception is usually raised only after JVM was just started, sometimes only
single request fails, but sometimes a bunch of 2-3 fail simultaneously and then
everything works fine. This doesn't happen after every restart, but does happen
from time to time.
I have a more or less table reproduce to test properties if there are any, but
can't provide the complete test case as it is too complex.
Environment:
Host: Ubuntu 18.04.3 LTS (Bionic Beaver)
Both client and server are in separate Docker containers on the same host
Docker version 19.03.4, build 9013bf583a
Oracle JDK 8 b231 (same with 8 b151)
CXF 3.3.3 (same with 3.2.6)
I create a new JAXRSClientFactory.create() proxy for each call, do a single
call and forget about the proxy till. All calls are to a single host, but
different urls, so problem is not specific to some http url.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)