[ 
https://issues.apache.org/jira/browse/FLINK-7974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16247474#comment-16247474
 ] 

ASF GitHub Bot commented on FLINK-7974:
---------------------------------------

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`?


> AbstractServerBase#shutdown does not wait for shutdown completion
> -----------------------------------------------------------------
>
>                 Key: FLINK-7974
>                 URL: https://issues.apache.org/jira/browse/FLINK-7974
>             Project: Flink
>          Issue Type: Bug
>          Components: Queryable State
>    Affects Versions: 1.4.0
>            Reporter: Till Rohrmann
>            Assignee: Kostas Kloudas
>            Priority: Critical
>
> The {{AbstractServerBase}} does not wait for the completion of its shutdown 
> when calling {{AbstractServerBase#shutdown}}. This is problematic since it 
> leads to resource leaks and instable tests such as the 
> {{AbstractServerTest}}. I propose to let the {{AbstractServerBase#shutdown}} 
> return a termination future which is completed upon shutdown completion.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to