On 30 January 2013 12:07, James Shaw <[email protected]> wrote:
> On 30 January 2013 11:54, Oleg Kalnichevski <[email protected]> wrote:
>> On Wed, 2013-01-30 at 11:22 +0000, James Shaw wrote:
>>> I'm having some trouble tracking this down, but I believe that
>>> httpclient 4.2.3 is clearing the interrupt flag.
>>>
>>> My code looks like this:
>>>
>>> executorService.submit(new Runnable() {
>>>     @Override public void run() {
>>>         while (!Thread.currentThread().isInterrupted()) {
>>>             consume(); // calls AWS SDK which uses Apache HttpClient
>>>         }
>>>     }
>>> });
>>>
>>> Sometimes this loop does not terminate when calling
>>> Future.cancel(true).  The only piece of diagnostics I have so far is
>>> this:
>>> Exception 'java.lang.InterruptedException' occurred in thread
>>> 'queue-consumer-reader-thread-1' at
>>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2017)
>>> Exception 'java.lang.InterruptedException' occurred in thread
>>> 'queue-consumer-reader-thread-1' at
>>> org.apache.http.impl.conn.tsccm.WaitingThread.await(WaitingThread.java:164)
>>> Exception 'java.lang.InterruptedException' occurred in thread
>>> 'queue-consumer-reader-thread-1' at
>>> org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:410)
>>> Exception 'java.lang.InterruptedException' occurred in thread
>>> 'queue-consumer-reader-thread-1' at
>>> org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:423)
>>>
>>> Should I not expect the interrupt flag to be preserved?  Do you have
>>> any suggestions how I could isolate this bug (I'm not 100% sure if
>>> it's in HttpClient or AWS client right now)?
>>>
>>> Thanks
>>>
>>
>> I am not aware of any place in HttpClient where it might meddle with the
>> interrupt flag.
> Is there anywhere that InterruptException is caught and either not
> rethrown, or the flag is not explicitly set again?  That would be
> sufficient.
Such as this, perhaps (I found this one while debugging):

try {
    managedConn = connRequest.getConnection(timeout, TimeUnit.MILLISECONDS);
} catch(InterruptedException interrupted) {
    InterruptedIOException iox = new InterruptedIOException();
    iox.initCause(interrupted);
    throw iox;
}
>From 
>https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.2.3/httpclient/src/main/java/org/apache/http/impl/client/DefaultRequestDirector.java

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

Reply via email to