[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12598357#action_12598357
 ] 

Sam Berlin commented on HTTPCLIENT-776:
---------------------------------------

The NPE can happen if another thread calls AbortableHttpRequest.abort() while 
AbstractPoolEntry is in the process of opening.  

The abort flow is:
 HttpRequestBase.abort  -> ConnectionReleaseTrigger.abortConnection -> 
AbstractClientConnAdapter.abortConnection -> AbstractPooledConnAdapter.shutdown 
-> AbstractPoolEntry.resetTrackedRoute

The request flow can get into open() from another thread, leaving it open to 
tracker becoming null at any time.

... not completely sure right now how to fix it.

> NPE w/ AbstractPoolEntry.open
> -----------------------------
>
>                 Key: HTTPCLIENT-776
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-776
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>    Affects Versions: 4.0 Alpha 4
>            Reporter: Sam Berlin
>
> java.lang.NullPointerException
>     at 
> org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:171)
>     at 
> org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
>     at 
> org.apache.http.impl.client.DefaultClientRequestDirector.execute(DefaultClientRequestDirector.java:309)
>     at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:501)
>     at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:456)
>     at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:422)
>     at 
> com.limegroup.gnutella.http.DefaultHttpExecutor.performRequest(DefaultHttpExecutor.java:97)
>     at 
> com.limegroup.gnutella.http.DefaultHttpExecutor.access$000(DefaultHttpExecutor.java:26)
>     at 
> com.limegroup.gnutella.http.DefaultHttpExecutor$MultiRequestor.run(DefaultHttpExecutor.java:135)
>     at 
> org.limewire.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1006)
>     at 
> org.limewire.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:549)
>     at java.lang.Thread.run(Unknown Source)
> Seeing a lot of these against Alpha4.  Also seeing still the occassional 
> IllegalStateException of:
> java.lang.IllegalStateException: Connection already open.
>     at 
> org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)
>     at 
> org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
>     at 
> org.apache.http.impl.client.DefaultClientRequestDirector.execute(DefaultClientRequestDirector.java:309)
>     at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:501)
>     at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:456)
>     at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:422)
>     at 
> com.limegroup.gnutella.http.DefaultHttpExecutor.performRequest(DefaultHttpExecutor.java:97)
>     at 
> com.limegroup.gnutella.http.DefaultHttpExecutor.access$000(DefaultHttpExecutor.java:26)
>     at 
> com.limegroup.gnutella.http.DefaultHttpExecutor$MultiRequestor.run(DefaultHttpExecutor.java:135)
>     at 
> org.limewire.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1006)
>     at 
> org.limewire.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:549)
>     at java.lang.Thread.run(Unknown Source)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to