[
https://issues.apache.org/jira/browse/HTTPCLIENT-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16985213#comment-16985213
]
Michael Osipov commented on HTTPCLIENT-2032:
--------------------------------------------
[~ehubert], I partially need to concur that it can only be retried if and only
if the cause is an IOException. There are spots in SunJSSE which throw generic
SSLExceptions. There cannot and must not retried.
[~olegk], I think we have no other chance than adapt to the new situation in
Java 11+ in the new {{HttpRequestRetryStrategy}}. WDYT?
I do have access to Oracle enterprise support for Java and could inquire that,
but believe me this will take time because Oracle's support is slow. We could
reach out to the OSS liaision at Oracle.
> Sometimes get a broken pipe error in Java 11 when trying to connect with
> HttpClient
> -----------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-2032
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2032
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient (classic)
> Affects Versions: 4.5.10
> Reporter: Jonathan Smith
> Priority: Major
>
> Connecting with httpclient expecting to get a handshake and/or certificate
> error but sometimes get a broken pipe error (and sometimes I get the desired
> handshake / certificate error).
> It works perfectly fine in Java 8.
> {code:java}
> javax.net.ssl.SSLException: Broken pipe (Write failed) at
> java.base/sun.security.ssl.Alert.createSSLException(Alert.java:127)
> at
> java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:320)
> at
> java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:263)
> at
> java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:258)
> at
> java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:988)
> at
> org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:124)
> at
> org.apache.http.impl.io.SessionOutputBufferImpl.flushBuffer(SessionOutputBufferImpl.java:136)
> at
> org.apache.http.impl.io.SessionOutputBufferImpl.flush(SessionOutputBufferImpl.java:144)
> at
> org.apache.http.impl.BHttpConnectionBase.doFlush(BHttpConnectionBase.java:174)
> at
> org.apache.http.impl.DefaultBHttpClientConnection.flush(DefaultBHttpClientConnection.java:183)
> at org.apache.http.impl.conn.CPoolProxy.flush(CPoolProxy.java:167)
> at
> org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:241)
> at
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
> at
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
> at
> org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
> at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
> at
> org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
> at
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:221)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:165)
> at
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:140)Caused
> by: java.net.SocketException: Broken pipe (Write failed)
> at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
> at
> java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
> at
> java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
> at
> java.base/sun.security.ssl.SSLSocketOutputRecord.deliver(SSLSocketOutputRecord.java:319)
> at
> java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:983)
> ... 36 more
> {code}
> As you can see, the SessionOutputBufferImpl tries to flush but hits the
> broken pipe. Could it be that the socket has already flushed itself sometimes
> and thus resulting in the connection/socket being closed before the explicit
> flush is called?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]