Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/4993#discussion_r150226661
  
    --- Diff: 
flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/network/Client.java
 ---
    @@ -166,27 +168,39 @@ public String getClientName() {
         *
         * <p>After a call to this method, all returned futures will be failed.
         */
    -   public void shutdown() {
    +   public CompletableFuture<Boolean> shutdown() {
    +           final CompletableFuture<Boolean> shutdownFuture = new 
CompletableFuture<>();
    +
                if (shutDown.compareAndSet(false, true)) {
    +                   final List<CompletableFuture<?>> connectionFutures = 
new ArrayList<>();
                        for (Map.Entry<InetSocketAddress, 
EstablishedConnection> conn : establishedConnections.entrySet()) {
                                if 
(establishedConnections.remove(conn.getKey(), conn.getValue())) {
    -                                   conn.getValue().close();
    +                                   
connectionFutures.add(conn.getValue().close());
                                }
                        }
     
                        for (Map.Entry<InetSocketAddress, PendingConnection> 
conn : pendingConnections.entrySet()) {
                                if (pendingConnections.remove(conn.getKey()) != 
null) {
    -                                   conn.getValue().close();
    +                                   
connectionFutures.add(conn.getValue().close());
                                }
                        }
     
    -                   if (bootstrap != null) {
    -                           EventLoopGroup group = bootstrap.group();
    -                           if (group != null) {
    -                                   group.shutdownGracefully(0L, 10L, 
TimeUnit.SECONDS);
    -                           }
    -                   }
    +                   CompletableFuture.allOf(connectionFutures.toArray(new 
CompletableFuture<?>[connectionFutures.size()])).thenRun(
    +                                   () -> {
    +                                           if (bootstrap != null) {
    +                                                   EventLoopGroup group = 
bootstrap.group();
    +                                                   if (group != null) {
    +                                                           
group.shutdownGracefully(0L, 10L, TimeUnit.SECONDS)
    --- End diff --
    
    why not setting the timeout to `0`?


---

Reply via email to