You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (Jira)" <ji...@apache.org> on 2019/11/29 08:21:00 UTC

[jira] [Commented] (HTTPCLIENT-2032) Sometimes get a broken pipe error in Java 11 when trying to connect with HttpClient

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16984806#comment-16984806 ] 

Oleg Kalnichevski commented on HTTPCLIENT-2032:
-----------------------------------------------

[~CoderJon] I am not sure what you expect us to do about it, especially given this issue is specific to Java 11.

Oleg

> 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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org