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

Oleg Kalnichevski commented on HTTPASYNC-151:
---------------------------------------------

[~saroja] But you ought not. Even though {{HttpContext}} itself might be 
perfectly thread safe, some of its attributes are not meant to be shared by 
multiple message exchanges such as redirect location list and are not thread 
safe. Please ensure the same {{HttpContex}} can be re-used by subsequent 
requests in the same session but not concurrent requests from multiple sessions.

Oleg 

> MainClientExec.prepare() throws java.lang.IndexOutOfBoundsException: Index: 
> 0, Size: -1
> ---------------------------------------------------------------------------------------
>
>                 Key: HTTPASYNC-151
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-151
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.1.2
>            Reporter: saroja nidadavolu
>            Priority: Major
>             Fix For: 4.1.5
>
>
> There is a server which connects to third party server to fetch valid HTTP 
> response.
> Configured a thread pool of size 2 and trying to get the response through 
> future get and then facing IndexOutOfBoundsException: Index: 0, Size: -1. 
> Issue is seen *intermittently*.  
>  
> {code:java}
>  // My lines of code where issue is seen
>  public Object processRequest() throws Exception {
>  ..
>  ..
>  Future<HttpResponse> future = httpclient.execute(httpReq, context, null);
>  httpResponse = future.get();
>  ..
>  ..
> }{code}
> As a java developer, I have never seen IIndexOutOfBoundsException with size 
> of -1, so only thing I can guess is that the List is not being used in thread 
> safe manner(redirectLocations in MainClientExec.java), corrupting the list.
>  
>  
> Stack trace:
> java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: 
> Index: 0, Size: -1
>  at org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:70)
>  at org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:80)
>  at 
> com.bwinparty.apicontainer.outbound.rest.httpasync.HttpAsyncClientProcessor.processRequest(HttpAsyncClientProcessor.java:272)
>  at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>  at java.lang.Thread.run(Thread.java:744)
> Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: -1
>  at java.util.AbstractList.rangeCheckForAdd(AbstractList.java:605)
>  at java.util.AbstractList.listIterator(AbstractList.java:325)
>  at java.util.AbstractList.removeRange(AbstractList.java:568)
>  at java.util.AbstractList.clear(AbstractList.java:234)
>  at 
> org.apache.http.impl.nio.client.MainClientExec.prepare(MainClientExec.java:135)
>  at 
> org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:124)
>  at 
> org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)
>  at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:74)
>  at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:107)
>  at 
> com.bwinparty.apicontainer.outbound.rest.httpasync.HttpAsyncClientProcessor.processRequest(HttpAsyncClientProcessor.java:271)
>  ... 15 more
>  



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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

Reply via email to