All,

I have been looking into a stacktrace that has been coming up alot for our users. This is on core 4.0 alpha 6 and client 4.0 alpha 2 (with minor URI fixes). The stacktrace is at the bottom of the message.

I haven't been able to reproduce it yet, however, in looking at the httpcore / client code, I'm having some suspicions about AbortableHttpRequest.abort(). I might also suspect IdleConnectionHandler, but the code to add / remove connections to it seems to look correct.

If you are in middle of doing a client.execute(), and a different Thread calls abort() (is this even allowed ... ?), the abort will close / shutdown / null-out a bunch of state that leaves many Objects in an illegal state. Since these objects are frequently asserted to be open / non-null, this causes the client.execute() to throw IllegalStateException.

Is any of these statements true:
* Do not call AbortableHttpRequest.abort() from a different Thread than client.execute * client.execute() is supposed to throw IllegalStateExceptions when another Thread calls AbortableHttpRequest.abort() on the request. * client.execute is supposed to throw IOException OR InterruptedException when another Thread calls AbortableHttpRequest.abort() on the request.

Of course, this stacktrace could have nothing to do with AbortableHttpRequest.abort().


java.lang.IllegalStateException: No wrapped connection.
at org.apache.http.impl.conn.AbstractClientConnAdapter.assertWrappedConn(AbstractClientConnAdapter.java:119) at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:195) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121) at org.apache.http.impl.client.DefaultClientRequestDirector.execute(DefaultClientRequestDirector.java:345) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:524) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:476) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:435) 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:139) 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)

-Tim Julien

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

Reply via email to