[ 
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)

Reply via email to