diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/RemoteInputChannel.java b/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/RemoteInputChannel.java index c22ba964ae19a7..7d6c98d73e9f26 100644 --- a/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/RemoteInputChannel.java +++ b/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/RemoteInputChannel.java @@ -784,7 +784,9 @@ public void onBuffer(Buffer buffer, int sequenceNumber, int backlog, int subpart boolean recycleBuffer = true; // The first buffer from the producer proves the upstream reader is registered and the - // connection is live; release any recovery-side awaiter. On later buffers this is a cheap + // connection is live; release any recovery-side awaiter (see requestRecoveryBufferBlocking). + // During recovery this first arrival is typically the upstream's EndOfOutputChannelStateEvent, + // which is guaranteed and passes the zero-credit gate. On later buffers this is a cheap // idempotent no-op (the latch count is already zero). upstreamReady.countDown();