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

ASF subversion and git services commented on HTTPCORE-758:
----------------------------------------------------------

Commit 42a15e4e665bd2d741c6a7c35d46666233d6a688 in httpcomponents-core's branch 
refs/heads/4.4.x from karthik-119
[ https://gitbox.apache.org/repos/asf?p=httpcomponents-core.git;h=42a15e4e6 ]

Fix exception handling when creating IO Dispatchers

When creating IO Dispatchers, there is possibility that an exception(fatal) can 
occur due to which dispatchers/worker threads creation fail and requests in 
queue aren't processed forever. See for example: 
https://issues.apache.org/jira/browse/HTTPCORE-758
So that if there are any exceptions while creating IO dispatchers, shutdown() 
will be called and all the components down the line are shutdown and cancel() 
will be called for future callbacks references, thus the caller won't wait 
indefinitely for the response from Apache Http client.

> Requests stuck in IOReactor queue due to fatal exceptions while creating IO 
> dispatchers
> ---------------------------------------------------------------------------------------
>
>                 Key: HTTPCORE-758
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-758
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.4.13
>         Environment: Library & version: Apache httpasyncclient - 4.1.4, 
> httpcore: 4.4.13,httpcore-nio: 4.4.10
> Operating System: Windows
> Runtime Environment: Java 1.8
>            Reporter: Karthik Bandi
>            Priority: Blocker
>
> Hi team,
> Requests are stuck in the requestQueue of IO Reactor 
> (DefaultConnectingIOReactor) but not processed due to abnormal termination of 
> I/O Reactor thread that processes the requests (started as part of calling 
> the start() in CloseableHttpAsyncClientBase).
> I've enabled http logging and collected the following error logs:
> {code:java}
> DEBUG 2023-09-18 10:16:38,706Z [parallel_; tid=11876601] [ 
> o.a.http.impl.nio.client.MainClientExec] : [exchange: 47975] start execution
> DEBUG 2023-09-18 10:16:38,706Z [parallel_; tid=11876601] [ 
> o.a.h.client.protocol.RequestAddCookies] : CookieSpec selected: standard
> DEBUG 2023-09-18 10:16:38,706Z [parallel_; tid=11876601] [ 
> o.a.h.client.protocol.RequestAuthCache] : Auth cache not set in the context
> DEBUG 2023-09-18 10:16:38,706Z [parallel_; tid=11876601] 
> [o.a.h.i.n.client.InternalHttpAsyncClient] : [exchange: 47975] Request 
> connection for {s}-> xxxxxxxxxxxxxxxxxxxxx
> DEBUG 2023-09-18 10:16:38,706Z [parallel_; tid=11876601] 
> [.n.c.PoolingNHttpClientConnectionManager] : Connection request: [route: 
> {s}->xxxxxxxxxxxxxxxxxxxxxxxxx][total kept alive: 0; route allocated: 0 of 2; 
> total allocated: 0 of 20]
> ERROR 2023-09-18 10:16:38,757Z [ pool-48041-thread-1] 
> [o.a.h.i.n.client.InternalHttpAsyncClient] : I/O reactor terminated abnormally
> org.apache.http.nio.reactor.IOReactorException: Failure opening selector
> at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.<init>(AbstractIOReactor.java:103)
> at 
> org.apache.http.impl.nio.reactor.BaseIOReactor.<init>(BaseIOReactor.java:85)
> at 
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:318)
> at 
> org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221)
> at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)
> at java.lang.Thread.run(Thread.java:750)
> Caused by: java.io.IOException: Unable to establish loopback connection
> at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:94)
> at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:61)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.nio.ch.PipeImpl.<init>(PipeImpl.java:171)
> at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:50)
> at java.nio.channels.Pipe.open(Pipe.java:155)
> at sun.nio.ch.WindowsSelectorImpl.<init>(WindowsSelectorImpl.java:142)
> at 
> sun.nio.ch.WindowsSelectorProvider.openSelector(WindowsSelectorProvider.java:44)
> at java.nio.channels.Selector.open(Selector.java:227)
> at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.<init>(AbstractIOReactor.java:101)
> ... 5 common frames omitted
> Caused by: java.net.SocketException: Socket operation on nonsocket: bind
> at sun.nio.ch.Net.bind0(Native Method)
> at sun.nio.ch.Net.bind(Net.java:461)
> at sun.nio.ch.Net.bind(Net.java:453)
> at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222)
> at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:85)
> at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:78)
> at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(PipeImpl.java:121)
> at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:76)
> ... 14 common frames omitted{code}
> I would like to know what is the cause for underlying exception:
> {code:java}
> Caused by: java.net.SocketException: Socket operation on nonsocket: bind{code}
> Is it environment issue that can be fixed with any configuration changes on 
> Windows system?
> If it is non-recoverable exception, why would the HttpAsyncClient doesn't 
> shutdown the connection manager and all relevant components and respond back 
> to the caller by calling the callback methods?
> Finally, Can I expect a fix for apache team on this issue? thanks.
> Same issue is reported in [Apache :: Requests stuck in queue due to 
> termination of I/O Reactor 
> (apachelounge.com)|https://www.apachelounge.com/viewtopic.php?t=9113]
> If there is something wrong in affect versions, please update them.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to