Github user StefanRRichter commented on a diff in the pull request:
https://github.com/apache/flink/pull/5423#discussion_r167622468
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/InputGate.java
---
@@ -72,7 +73,19 @@
void requestPartitions() throws IOException, InterruptedException;
- BufferOrEvent getNextBufferOrEvent() throws IOException,
InterruptedException;
+ /**
+ * Blocking call waiting for next {@link BufferOrEvent}.
+ *
+ * @return {@code Optional.empty()} if {@link #isFinished()} returns
true.
+ */
+ Optional<BufferOrEvent> getNextBufferOrEvent() throws IOException,
InterruptedException;
--- End diff --
From the description and also to better contrast against
`pollNextBufferOrEvent ()`, it almost feels like this method should always
return a `BufferOrEvent` and rather throw an exception if `isFinished()`. This
seems to be how the empty optional is translated anyways, see
AbstractRecordReader which reacts with `IllegalStateException`.
---