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=16247475#comment-16247475
] 

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_r150229482
  
    --- Diff: flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/network/Client.java
---
    @@ -483,27 +511,31 @@ private boolean close(Throwable cause) {
     		@Override
     		public void onRequestResult(long requestId, RESP response) {
     			TimestampedCompletableFuture pending = pendingRequests.remove(requestId);
    -			if (pending != null && pending.complete(response)) {
    +			if (pending != null && !pending.isDone()) {
     				long durationMillis = (System.nanoTime() - pending.getTimestamp()) / 1_000_000L;
     				stats.reportSuccessfulRequest(durationMillis);
    +				pending.complete(response);
     			}
     		}
     
     		@Override
     		public void onRequestFailure(long requestId, Throwable cause) {
     			TimestampedCompletableFuture pending = pendingRequests.remove(requestId);
    -			if (pending != null && pending.completeExceptionally(cause)) {
    +			if (pending != null && !pending.isDone()) {
     				stats.reportFailedRequest();
    +				pending.completeExceptionally(cause);
     			}
     		}
     
     		@Override
     		public void onFailure(Throwable cause) {
    -			if (close(cause)) {
    -				// Remove from established channels, otherwise future
    -				// requests will be handled by this failed channel.
    -				establishedConnections.remove(serverAddress, this);
    -			}
    +			close(cause).thenAccept(cancelled -> {
    +				if (cancelled) {
    --- End diff --
    
    Why do we only remove `this` from `establischedConnections` if `cancelled` is true?


> 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