From cf94053c3403297c18d75eca4a68560a1e131af5 Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 24 May 2017 18:51:20 +0200 Subject: Don't throw runtime exception on interruption - since we know the future is already done, we should leave the thread in an interrupted state and proceed. This fixes a blaze crash when a 'genquery' execution is interrupted at the right time. PiperOrigin-RevId: 157000269 --- .../devtools/build/lib/query2/engine/AbstractQueryEnvironment.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/query2/engine') diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/AbstractQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/engine/AbstractQueryEnvironment.java index 80ded4ffea..a078a4b7ad 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/engine/AbstractQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/engine/AbstractQueryEnvironment.java @@ -24,7 +24,6 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryTaskCallable; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryTaskFuture; -import com.google.devtools.build.lib.util.Preconditions; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; @@ -84,10 +83,9 @@ public abstract class AbstractQueryEnvironment implements QueryEnvironment @Override public T getIfSuccessful() { - Preconditions.checkState(delegate.isDone()); try { - return delegate.get(); - } catch (CancellationException | InterruptedException | ExecutionException e) { + return Futures.getDone(delegate); + } catch (CancellationException | ExecutionException e) { throw new IllegalStateException(e); } } -- cgit v1.2.3