Github user pnowojski commented on a diff in the pull request: https://github.com/apache/flink/pull/4533#discussion_r146614062 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/io/network/netty/CreditBasedClientHandler.java --- @@ -322,22 +322,25 @@ private void writeAndFlushNextMessageIfPossible(Channel channel) { while (true) { RemoteInputChannel inputChannel = inputChannelsWithCredit.poll(); - // The input channel may be null because of the write callbacks that are executed - // after each write, and it is also no need to notify credit for released channel. - if (inputChannel == null || inputChannel.isReleased()) { + // The input channel may be null because of the write callbacks + // that are executed after each write. + if (inputChannel == null) { return; } - AddCredit msg = new AddCredit( - inputChannel.getPartitionId(), - inputChannel.getAndResetCredit(), - inputChannel.getInputChannelId()); + //It is no need to notify credit for the released channel. + if (!inputChannel.isReleased()) { + AddCredit msg = new AddCredit( + inputChannel.getPartitionId(), + inputChannel.getAndResetCredit(), + inputChannel.getInputChannelId()); - // Write and flush and wait until this is done before - // trying to continue with the next input channel. - channel.writeAndFlush(msg).addListener(writeListener); + // Write and flush and wait until this is done before + // trying to continue with the next input channel. + channel.writeAndFlush(msg).addListener(writeListener); - return; + return; --- End diff -- If one `inputChannel` from the `inputChannelsWithCredit` was released, should we brake this loop and ignore remaining `inputChannelsWithCredit` content?
---