flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLINK-7974) AbstractServerBase#shutdown does not wait for shutdown completion
Date Fri, 10 Nov 2017 13:15:10 GMT

    [ 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)

Mime
View raw message