ASF GitHub Bot commented on FLINK-7423:

GitHub user XuPingyong opened a pull request:


    [FLINK-7423] Always reuse an instance to get elements from the inputFormat

    ## What is the purpose of the change
    This pull request fix a bug about getting elements from the inputFormat in 
    ## Verifying this change
    This change added tests and can be verified as follows:
      - *Added test in InputFormatSourceFunctionTest*
    ## Does this pull request potentially affect one of the following parts:
      - Dependencies (does it add or upgrade a dependency): (no)
      - The public API, i.e., is any changed class annotated with 
`@Public(Evolving)`: (no)
      - The serializers: (no)
      - The runtime per-record code paths (performance sensitive): (no)
      - Anything that affects deployment or recovery: JobManager (and its 
components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
    ## Documentation
      - Does this pull request introduce a new feature? (no)

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/XuPingyong/flink FLINK-7423

Alternatively you can review and apply these changes as the patch at:


To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #4525
commit ddca0f9d258eed4bc69bf931aebc1bbde385c799
Author: pingyong.xpy <pingyong....@alibaba-inc.com>
Date:   2017-08-11T06:09:12Z

    [FLINK-7423] Always reuse an instance to get elements from the inputFormat


> 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: Streaming
>            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

Reply via email to