flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tillrohrmann <...@git.apache.org>
Subject [GitHub] flink pull request #4993: [FLINK-7974][FLINK-7975][QS] Wait for shutdown in ...
Date Fri, 10 Nov 2017 13:14:31 GMT
Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/4993#discussion_r150228000
  
    --- Diff: flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/network/Client.java
---
    @@ -309,31 +323,38 @@ private void handInChannel(Channel channel) {
     		/**
     		 * Close the connecting channel with a ClosedChannelException.
     		 */
    -		private void close() {
    -			close(new ClosedChannelException());
    +		private CompletableFuture<?> close() {
    +			return close(new ClosedChannelException());
     		}
     
     		/**
     		 * Close the connecting channel with an Exception (can be {@code null})
     		 * or forward to the established channel.
     		 */
    -		private void close(Throwable cause) {
    +		private CompletableFuture<?> close(Throwable cause) {
     			synchronized (connectLock) {
    -				if (!closed) {
    +				final CompletableFuture<?> shutdownFuture;
    +				if (closed) {
    +					shutdownFuture = new CompletableFuture<>();
    +					shutdownFuture.complete(null);
    +				} else {
     					if (failureCause == null) {
     						failureCause = cause;
     					}
     
     					if (established != null) {
    -						established.close();
    +						shutdownFuture = established.close();
     					} else {
     						PendingRequest pending;
     						while ((pending = queuedRequests.poll()) != null) {
     							pending.completeExceptionally(cause);
     						}
    +						shutdownFuture = new CompletableFuture<>();
    +						shutdownFuture.complete(null);
     					}
    -					closed = true;
    +					shutdownFuture.thenRun(() -> closed = true);
    --- End diff --
    
    Why do we set `closed` to true` only after the shutdown completed? Shouldn't `close` directly
set it to true such that all preceding operations won't be executed anymore?


---

Mime
View raw message