diff --git a/spark-client/src/main/java/org/apache/hive/spark/client/rpc/Rpc.java b/spark-client/src/main/java/org/apache/hive/spark/client/rpc/Rpc.java index 5dde16c..45fc1ea 100644 --- a/spark-client/src/main/java/org/apache/hive/spark/client/rpc/Rpc.java +++ b/spark-client/src/main/java/org/apache/hive/spark/client/rpc/Rpc.java @@ -339,6 +339,9 @@ public void close() { } } } + if (dispatcher != null) { + dispatcher.cancelOutstandingRpcs(); + } } } diff --git a/spark-client/src/main/java/org/apache/hive/spark/client/rpc/RpcDispatcher.java b/spark-client/src/main/java/org/apache/hive/spark/client/rpc/RpcDispatcher.java index 2b6ab29..14ecc98 100644 --- a/spark-client/src/main/java/org/apache/hive/spark/client/rpc/RpcDispatcher.java +++ b/spark-client/src/main/java/org/apache/hive/spark/client/rpc/RpcDispatcher.java @@ -186,6 +186,13 @@ void discardRpc(long id) { findRpc(id); } + void cancelOutstandingRpcs() { + for (OutstandingRpc rpc : rpcs) { + rpc.future.cancel(true); + } + rpcs.clear(); + } + private static class OutstandingRpc { final long id; final Promise future;