[
https://issues.apache.org/jira/browse/FLINK-7423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16124538#comment-16124538
]
ASF GitHub Bot commented on FLINK-7423:
---------------------------------------
Github user greghogan commented on the issue:
https://github.com/apache/flink/pull/4525
As I understand Flink does not allow `null` records since what does it mean
to partition or window a null record? `null` fields are sometimes allowed but
`null` records are meaningless.
The caller of `InputFormat#nextRecord` cannot reuse an object which has
already been passed to `nextRecord` as a reusable object as this may result in
an object being "used" twice. That's why object reuse always replaces the
passed object with the returned object, which may be the same but could be
different.
@kl0u could you offer some insight into FLINK-4075 adding the null check
with break to `InputFormatSourceFunction#run`? Thanks.
> Always reuse an instance to get elements from the inputFormat
> ---------------------------------------------------------------
>
> Key: FLINK-7423
> URL: https://issues.apache.org/jira/browse/FLINK-7423
> Project: Flink
> Issue Type: Bug
> Components: DataStream API
> Reporter: Xu Pingyong
> Assignee: Xu Pingyong
>
> In InputFormatSourceFunction.java:
> {code:java}
> OUT nextElement = serializer.createInstance();
> while (isRunning) {
> format.open(splitIterator.next());
> // for each element we also check if cancel
> // was called by checking the isRunning flag
> while (isRunning && !format.reachedEnd()) {
> nextElement =
> format.nextRecord(nextElement);
> if (nextElement != null) {
> ctx.collect(nextElement);
> } else {
> break;
> }
> }
> format.close();
> completedSplitsCounter.inc();
> if (isRunning) {
> isRunning = splitIterator.hasNext();
> }
> }
> {code}
> the format may return other element or null when nextRecord, that will may
> cause exception.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)