diff --git a/src/main/java/com/google/devtools/build/lib/remote/grpc/ChannelConnectionFactory.java b/src/main/java/com/google/devtools/build/lib/remote/grpc/ChannelConnectionFactory.java index 96d4d3af24f63e..4d6842e6facdd5 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/grpc/ChannelConnectionFactory.java +++ b/src/main/java/com/google/devtools/build/lib/remote/grpc/ChannelConnectionFactory.java @@ -46,14 +46,20 @@ public ClientCall call( @Override public void close() throws IOException { + // Clear interrupted status to prevent failure to await, indicated with #13512 + boolean wasInterrupted = Thread.interrupted(); // There is a bug (b/183340374) in gRPC that client doesn't try to close connections with // shutdown() if the channel received GO_AWAY frames. Using shutdownNow() here as a // workaround. - channel.shutdownNow(); try { + channel.shutdownNow(); channel.awaitTermination(Integer.MAX_VALUE, SECONDS); } catch (InterruptedException e) { throw new IOException(e.getMessage(), e); + } finally { + if (wasInterrupted) { + Thread.currentThread().interrupt(); + } } }