[
https://issues.apache.org/jira/browse/HTTPCLIENT-1425?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13800679#comment-13800679
]
James Leigh commented on HTTPCLIENT-1425:
-----------------------------------------
Looks like the cause due to the max-object-size parameter.
It works if something like
CacheConfig.custom().setMaxObjectSize(1000000).build(); is used, but fails
using CacheConfig.custom().setMaxObjectSize(10).build();
CachingExec#handleBackendResponse always closes the backendResponse. However,
if SizeLimitedResponseReader#getReconstructedResponse() is returned the
backendResponse is not fully consumed and should not be closed.
James
> Socket Closed Exception When Reading Connection: close Response Entities
> ------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1425
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1425
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpCache
> Affects Versions: 4.3.1
> Environment: java version "1.7.0_25"
> OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
> OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
> Reporter: James Leigh
> Fix For: 4.3.2
>
>
> If the server closes the TCP connection, immediately after sending the
> complete response, httpclient-cache will throw socket closed exception.
> The server at http://3roundstones.com/ will close the response immediately
> after sending the complete response and will include the headers: Connection:
> close and Transfer-Encoding: chunked.
> HttpClient can deal with this response no problem (using
> HttpClients.createDefault). However, CachingHttpClients.createMemoryBound
> throws an exception every time I try it. Below is some code (mostly taken of
> the docs) that also fails every time. Further down is the stack trace it
> produces.
> CacheConfig cacheConfig = CacheConfig.custom().build();
> RequestConfig requestConfig = RequestConfig.custom().build();
> CloseableHttpClient httpclient = CachingHttpClients.custom()
> .setCacheConfig(cacheConfig)
> .setDefaultRequestConfig(requestConfig).build();
> HttpCacheContext context = HttpCacheContext.create();
> HttpGet httpget = new HttpGet("http://3roundstones.com/");
> CloseableHttpResponse response = httpclient.execute(httpget, context);
> try {
> String body = EntityUtils.toString(response.getEntity());
> assertTrue(body.length() > 0);
> } finally {
> response.close();
> httpclient.close();
> }
> java.net.SocketException: Socket closed
> at java.net.SocketInputStream.socketRead0(Native Method)
> at java.net.SocketInputStream.read(SocketInputStream.java:150)
> at java.net.SocketInputStream.read(SocketInputStream.java:121)
> at
> org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:136)
> at
> org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:152)
> at
> org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:270)
> at
> org.apache.http.impl.io.ChunkedInputStream.getChunkSize(ChunkedInputStream.java:240)
> at
> org.apache.http.impl.io.ChunkedInputStream.nextChunk(ChunkedInputStream.java:206)
> at
> org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:169)
> at
> org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137)
> at java.io.SequenceInputStream.read(SequenceInputStream.java:208)
> at java.io.SequenceInputStream.read(SequenceInputStream.java:211)
> at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
> at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
> at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
> at java.io.InputStreamReader.read(InputStreamReader.java:184)
> at java.io.Reader.read(Reader.java:140)
> at org.apache.http.util.EntityUtils.toString(EntityUtils.java:244)
> at org.apache.http.util.EntityUtils.toString(EntityUtils.java:288)
--
This message was sent by Atlassian JIRA
(v6.1#6144)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]