浏览代码

put off instread of swallow interruption on close

jianghua 4 年之前
父节点
当前提交
0c36a9a363
共有 1 个文件被更改,包括 15 次插入7 次删除
  1. 15 7
      src/main/java/io/milvus/client/MilvusGrpcClient.java

+ 15 - 7
src/main/java/io/milvus/client/MilvusGrpcClient.java

@@ -107,14 +107,22 @@ public class MilvusGrpcClient extends AbstractMilvusGrpcClient {
     channel.shutdown();
     long now = System.nanoTime();
     long deadline = now + TimeUnit.SECONDS.toNanos(maxWaitSeconds);
-    while (now < deadline && !channel.isTerminated()) {
-      try {
-        channel.awaitTermination(deadline - now, TimeUnit.NANOSECONDS);
-      } catch (InterruptedException ex) {
+    boolean interrupted = false;
+    try {
+      while (now < deadline && !channel.isTerminated()) {
+        try {
+          channel.awaitTermination(deadline - now, TimeUnit.NANOSECONDS);
+        } catch (InterruptedException ex) {
+          interrupted = true;
+        }
+      }
+      if (!channel.isTerminated()) {
+        channel.shutdownNow();
+      }
+    } finally {
+      if (interrupted) {
+        Thread.currentThread().interrupt();
       }
-    }
-    if (!channel.isTerminated()) {
-      channel.shutdownNow();
     }
   }