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

    https://github.com/apache/flink/pull/5038#discussion_r152298240
  
    --- Diff: 
flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/network/Client.java
 ---
    @@ -312,32 +345,43 @@ 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) {
    -                   synchronized (connectLock) {
    -                           if (!closed) {
    -                                   if (failureCause == null) {
    -                                           failureCause = cause;
    -                                   }
    +           private CompletableFuture<?> close(Throwable cause) {
    +                   CompletableFuture<?> future = new CompletableFuture<>();
    +                   if (connectionShutdownFuture.compareAndSet(null, 
future)) {
    +                           synchronized (connectLock) {
    +                                   if (!closed) {
    --- End diff --
    
    this seems unnecessary, doesn't the check at L358 guarantee that the entire 
branch is only executed once?


---

Reply via email to