thanks Oleg. What happens if in a successful case the future is not
consumed by the application? When will that memory be released?

regards,
Nitu

On Thu, Nov 23, 2017 at 3:08 AM, Oleg Kalnichevski <[email protected]> wrote:

>
>
> On Wed, Nov 22, 2017 at 9:19 PM, Nitu Choudhary <[email protected]>
> wrote:
>
>> Hi,
>>
>> Under high concurrency we see cases where I/O reactor is getting
>> terminated
>> when closing the input stream. In our application we also close the input
>> stream as we want to cleanup the memory under various exception
>> conditions.
>> What is the recommended way to consume the http entity? It shows that on
>> timeout the nio client is trying to consume the entity, but it has already
>> been consumed by our application as it got a done signal, and we retrieved
>> the entity and closed it.
>>
>
>
> Hi Nitu
>
> Unlike its blocking counterpart HttpAsyncClient automatically deallocates
> resources once a message exchange is complete (successfully or
> unsuccessfully). One does not need to ensure the response entity is fully
> consumed in order to ensure proper deallocation of the connection
> associated with it. This is taken care of by the framework.
>
> However I would strongly recommend to avoid mixing non-blocking I/O with
> inherently blocking InputStream / OutputStream based APIs. I would
> recommend using proper non-blocking HttpAsyncRequestProducer and
> HttpAsyncResponseConsumer implementations for any non-trivial request /
> response exchanges with HttpAsyncClient. In other words try getting rid of
> SequenceInputStream entirely.
>
> Hope this helps
>
> Oleg
>
>
>
>> Here is the stack for your reference:
>>
>> org.apache.http.impl.nio.client.InternalHttpAsyncClient - I/O reactor
>> terminated abnormally java.util.NoSuchElementException: null at
>> java.util.
>> ArrayList$Itr.next(ArrayList.java:854) at java.util.Collections$3.nextEl
>> ement(Collections.java:5216) at java.io.SequenceInputStream.nextStream(
>> SequenceInputStream.java:110) at java.io.SequenceInputStream.close(
>> SequenceInputStream.java:232) at org.apache.http.nio.entity.Ent
>> ityAsyncContentProducer.close(EntityAsyncContentProducer.java:92) at org.
>> apache.http.nio.protocol.BasicAsyncRequestProducer.close(
>> BasicAsyncRequestProducer.java:155) at org.apache.http.impl.nio.client.
>> DefaultClientExchangeHandlerImpl.releaseResources(DefaultC
>> lientExchangeHandlerImpl.java:84) at org.apache.http.impl.nio.client.
>> AbstractClientExchangeHandler.failed(AbstractClientExchangeH
>> andler.java:429)
>> at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.
>> connectionRequestFailed(AbstractClientExchangeHandler.java:348) at org.
>> apache.http.impl.nio.client.AbstractClientExchangeHandler.access$100(
>> AbstractClientExchangeHandler.java:62) at org.apache.http.impl.nio.clien
>> t.
>> AbstractClientExchangeHandler$1.failed(AbstractClientExchang
>> eHandler.java:
>> 392) at org.apache.http.concurrent.BasicFuture.failed(BasicFuture.
>> java:134)
>> at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$1.
>> failed(PoolingNHttpClientConnectionManager.java:289) at org.apache.http.
>> concurrent.BasicFuture.failed(BasicFuture.java:134) at
>> org.apache.http.nio.
>> pool.RouteSpecificPool.timeout(RouteSpecificPool.java:168) at org.apache.
>> http.nio.pool.AbstractNIOConnPool.requestTimeout(AbstractNIO
>> ConnPool.java:
>> 584) at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSession
>> RequestCallback.timeout(AbstractNIOConnPool.java:851) at org.apache.http.
>> impl.nio.reactor.SessionRequestImpl.timeout(SessionRequestImpl.java:183)
>> at
>> org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.
>> processTimeouts(
>> DefaultConnectingIOReactor.java:210) at org.apache.http.impl.nio.reactor.
>> DefaultConnectingIOReactor.processEvents(DefaultConnectingIO
>> Reactor.java:155)
>> at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(
>> AbstractMultiworkerIOReactor.java:348) at org.apache.http.impl.nio.conn.
>> PoolingNHttpClientConnectionManager.execute(PoolingNHttpClie
>> ntConnectionManager.java:194) at org.apache.http.impl.nio.client.
>> CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)
>> at
>> java.lang.Thread.run(Thread.java:748)
>>
>> regards,
>> nitu
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to