[
https://issues.apache.org/jira/browse/HTTPCORE-647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17181172#comment-17181172
]
Oleg Kalnichevski commented on HTTPCORE-647:
--------------------------------------------
[~lukasodaniel] This is presently the only reasonable fix I can think of:
https://github.com/ok2c/httpcomponents-core/commit/03ddd7889d807a8b7dd6dc7b7b23f5be0bce9b60
Oleg
> Connection aborted infinite loop
> ---------------------------------
>
> Key: HTTPCORE-647
> URL: https://issues.apache.org/jira/browse/HTTPCORE-647
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Affects Versions: 4.4.13
> Environment: java 8
> Reporter: Lukas O'Daniel
> Priority: Major
> Fix For: 4.4.14
>
> Attachments: Client.java, Entity.java, Server.java
>
>
> There is some issue that occurs when a response is not fully written and the
> connection closes or times out in 4.4.13. When this occurs, there is some
> infinite loop that logs the stack trace multiple times per millisecond. I
> have attached a simple example that can reproduce this behavior. The entity
> I'm using is based on NByteArrayEntity. In practice this issue was extremely
> rare on our servers, but requires restart to fix.
>
> This can be reproduced by running [^Server.java] and then running
> [^Client.java]
>
> For localhost I get the error and stack trace dumped infinitely:
> {{java.io.IOException: An established connection was aborted by the software
> in your host machinejava.io.IOException: An established connection was
> aborted by the software in your host machine at
> sun.nio.ch.SocketDispatcher.write0(Native Method) at
> sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51) at
> sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) at
> sun.nio.ch.IOUtil.write(IOUtil.java:65) at
> sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) at
> org.apache.http.impl.nio.reactor.SessionOutputBufferImpl.flush(SessionOutputBufferImpl.java:182)
> at
> org.apache.http.impl.nio.DefaultNHttpServerConnection.produceOutput(DefaultNHttpServerConnection.java:316)
> at
> org.apache.http.impl.nio.DefaultHttpServerIODispatch.onOutputReady(DefaultHttpServerIODispatch.java:248)
> at
> org.apache.http.impl.nio.DefaultHttpServerIODispatch.onOutputReady(DefaultHttpServerIODispatch.java:57)
> at
> org.apache.http.impl.nio.reactor.AbstractIODispatch.outputReady(AbstractIODispatch.java:145)
> at
> org.apache.http.impl.nio.reactor.BaseIOReactor.writable(BaseIOReactor.java:187)
> at
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:341)
> at
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
> at
> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
> at
> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
> at
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
> at java.lang.Thread.run(Thread.java:748)}}
>
> I was getting the equivalent on remote hosts with different error message:
> \{{ java.io.IOException: An existing connection was forcibly closed by the
> remote host}}
>
> Apologies for formatting, etc this is my first open source bug report.
> This seems like it could be related to the fix for HTTPCORE-607. I don't get
> this issue, at least for this example code, using 4.4.12 and previous.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]