hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Kalnichevski <ol...@apache.org>
Subject Re: Interrupt flag getting cleared
Date Wed, 30 Jan 2013 13:00:32 GMT
On Wed, 2013-01-30 at 12:28 +0000, James Shaw wrote:
> On 30 January 2013 12:26, Oleg Kalnichevski <olegk@apache.org> wrote:
> > On Wed, 2013-01-30 at 12:07 +0000, James Shaw wrote:
> >> On 30 January 2013 11:54, Oleg Kalnichevski <olegk@apache.org> 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.
> >>
> >
> > There are two places where InterruptedException is re-thrown as
> > InterruptedIOException. I am not aware of any place where
> > InterruptedException can be caught and not re-thrown.
> >
> But by rethrowing a different exception, the interrupt flag will be cleared, no?
> 

I believe so. Honestly, I just do not know what the correct behavior
should be. It does appear, though, it is usually expected that a well
behaved application would re-interrupt the thread if it does not
propagate the InterruptedException [1]

Please raise a JIRA for this defect.

Oleg

[1] http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html





---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Mime
View raw message