Internal: AdapterActionFuture should not set currentThread().interrupt()

If someone blocks on it and it is interrupted, we throw an ElasticsearchIllegalStateException. We should not set Thread.currentThread().interrupt(); in this case because we already communicate the interrupt through an exception.

Similar to #9001

Closes #9141
This commit is contained in:
Boaz Leskes 2015-01-05 16:23:38 +01:00
parent cd04851206
commit 9090e0381f
2 changed files with 15 additions and 17 deletions

View File

@ -34,9 +34,9 @@ import java.util.concurrent.TimeUnit;
public interface ActionFuture<T> extends Future<T> { public interface ActionFuture<T> extends Future<T> {
/** /**
* Similar to {@link #get()}, just catching the {@link InterruptedException} with * Similar to {@link #get()}, just catching the {@link InterruptedException} and throwing
* restoring the interrupted state on the thread and throwing an {@link org.elasticsearch.ElasticsearchIllegalStateException}, * an {@link org.elasticsearch.ElasticsearchIllegalStateException} instead. Also catches
* and throwing the actual cause of the {@link java.util.concurrent.ExecutionException}. * {@link java.util.concurrent.ExecutionException} and throws the actual cause instead.
* <p/> * <p/>
* <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped * <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped
* from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is * from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is
@ -45,9 +45,9 @@ public interface ActionFuture<T> extends Future<T> {
T actionGet() throws ElasticsearchException; T actionGet() throws ElasticsearchException;
/** /**
* Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} with * Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} and throwing
* restoring the interrupted state on the thread and throwing an {@link org.elasticsearch.ElasticsearchIllegalStateException}, * an {@link org.elasticsearch.ElasticsearchIllegalStateException} instead. Also catches
* and throwing the actual cause of the {@link java.util.concurrent.ExecutionException}. * {@link java.util.concurrent.ExecutionException} and throws the actual cause instead.
* <p/> * <p/>
* <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped * <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped
* from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is * from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is
@ -56,9 +56,9 @@ public interface ActionFuture<T> extends Future<T> {
T actionGet(String timeout) throws ElasticsearchException; T actionGet(String timeout) throws ElasticsearchException;
/** /**
* Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} with * Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} and throwing
* restoring the interrupted state on the thread and throwing an {@link org.elasticsearch.ElasticsearchIllegalStateException}, * an {@link org.elasticsearch.ElasticsearchIllegalStateException} instead. Also catches
* and throwing the actual cause of the {@link java.util.concurrent.ExecutionException}. * {@link java.util.concurrent.ExecutionException} and throws the actual cause instead.
* <p/> * <p/>
* <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped * <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped
* from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is * from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is
@ -69,9 +69,9 @@ public interface ActionFuture<T> extends Future<T> {
T actionGet(long timeoutMillis) throws ElasticsearchException; T actionGet(long timeoutMillis) throws ElasticsearchException;
/** /**
* Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} with * Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} and throwing
* restoring the interrupted state on the thread and throwing an {@link org.elasticsearch.ElasticsearchIllegalStateException}, * an {@link org.elasticsearch.ElasticsearchIllegalStateException} instead. Also catches
* and throwing the actual cause of the {@link java.util.concurrent.ExecutionException}. * {@link java.util.concurrent.ExecutionException} and throws the actual cause instead.
* <p/> * <p/>
* <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped * <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped
* from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is * from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is
@ -80,9 +80,9 @@ public interface ActionFuture<T> extends Future<T> {
T actionGet(long timeout, TimeUnit unit) throws ElasticsearchException; T actionGet(long timeout, TimeUnit unit) throws ElasticsearchException;
/** /**
* Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} with * Similar to {@link #get(long, java.util.concurrent.TimeUnit)}, just catching the {@link InterruptedException} and throwing
* restoring the interrupted state on the thread and throwing an {@link org.elasticsearch.ElasticsearchIllegalStateException}, * an {@link org.elasticsearch.ElasticsearchIllegalStateException} instead. Also catches
* and throwing the actual cause of the {@link java.util.concurrent.ExecutionException}. * {@link java.util.concurrent.ExecutionException} and throws the actual cause instead.
* <p/> * <p/>
* <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped * <p>Note, the actual cause is unwrapped to the actual failure (for example, unwrapped
* from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is * from {@link org.elasticsearch.transport.RemoteTransportException}. The root failure is

View File

@ -44,7 +44,6 @@ public abstract class AdapterActionFuture<T, L> extends BaseFuture<T> implements
try { try {
return get(); return get();
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new ElasticsearchIllegalStateException("Future got interrupted", e); throw new ElasticsearchIllegalStateException("Future got interrupted", e);
} catch (ExecutionException e) { } catch (ExecutionException e) {
throw rethrowExecutionException(e); throw rethrowExecutionException(e);
@ -73,7 +72,6 @@ public abstract class AdapterActionFuture<T, L> extends BaseFuture<T> implements
} catch (TimeoutException e) { } catch (TimeoutException e) {
throw new ElasticsearchTimeoutException(e.getMessage()); throw new ElasticsearchTimeoutException(e.getMessage());
} catch (InterruptedException e) { } catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new ElasticsearchIllegalStateException("Future got interrupted", e); throw new ElasticsearchIllegalStateException("Future got interrupted", e);
} catch (ExecutionException e) { } catch (ExecutionException e) {
throw rethrowExecutionException(e); throw rethrowExecutionException(e);