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

Oleg Kalnichevski commented on HTTPCORE-334:
--------------------------------------------

See 'Activity'.

Oleg

> https request to a non-responsive but alive port results in a busy loop in 
> one thread
> -------------------------------------------------------------------------------------
>
>                 Key: HTTPCORE-334
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-334
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.2.4
>         Environment: Windows 8 64-bit
> JDK 1.7.0_11
>            Reporter: Scott Stanton
>             Fix For: 4.2.4, 4.3-beta1
>
>         Attachments: HTTPCORE-334.patch, TestHttpsAsyncTimeout.java
>
>
> Steps to reproduce:
> * Start a process that listens on a socket, accepts the connection, but does 
> not read any data
> * In a second processs, establish an https connection 
> At this point, one reactor thread will go into a busy loop getting writable 
> events but not writing any data.  As far as I can tell, this continues 
> indefinitely until either the client or the server closes the port.  Ideally 
> this scenario would result in no cpu overhead as the selector should only be 
> waiting for read events if it doesn't have any data to write.  Eventually it 
> should hit an idle timeout so the client can recover from a non responsive 
> server.
> Here is a stack snapshot for the busy thread:
> Agent-003 [RUNNABLE, IN_NATIVE] CPU time: 39s
> com.yourkit.probes.Table.createRow()
> com.yourkit.probes.Table.createRow(int)
> com.yourkit.probes.builtin.Sockets$SocketChannel_write_Probe.onEnter(SocketChannel)
> sun.nio.ch.SocketChannelImpl.write(ByteBuffer)
> org.apache.http.nio.reactor.ssl.SSLIOSession.sendEncryptedData()
> org.apache.http.nio.reactor.ssl.SSLIOSession.outboundTransport()
> org.apache.http.impl.nio.reactor.AbstractIODispatch.outputReady(IOSession)
> org.apache.http.impl.nio.reactor.BaseIOReactor.writable(SelectionKey)
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(SelectionKey)
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(Set)
> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute()
> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(IOEventDispatch)
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run()
> java.lang.Thread.run()
> com.electriccloud.util.EcThread.run()



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to