You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/05/01 02:19:04 UTC

[jira] [Commented] (FLINK-6394) GroupCombine reuses instances even though object reuse is disabled

    [ https://issues.apache.org/jira/browse/FLINK-6394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15990543#comment-15990543 ] 

ASF GitHub Bot commented on FLINK-6394:
---------------------------------------

GitHub user KurtYoung opened a pull request:

    https://github.com/apache/flink/pull/3803

    [FLINK-6394] [runtime] Respect object reuse configuration when execut…

    …ing group combining function
    


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

    $ git pull https://github.com/KurtYoung/flink flink-6394

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

    https://github.com/apache/flink/pull/3803.patch

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

    This closes #3803
    
----
commit 3f81f60603940ec2b26e81814224b69ae40afcc0
Author: Kurt Young <yk...@gmail.com>
Date:   2017-04-30T08:56:00Z

    [FLINK-6394] [runtime] Respect object reuse configuration when executing group combining function

----


> GroupCombine reuses instances even though object reuse is disabled
> ------------------------------------------------------------------
>
>                 Key: FLINK-6394
>                 URL: https://issues.apache.org/jira/browse/FLINK-6394
>             Project: Flink
>          Issue Type: Bug
>    Affects Versions: 1.2.0
>            Reporter: Jaromir Vanek
>            Assignee: Kurt Young
>            Priority: Critical
>
> I am using group combiner in DataSet API with disabled object reuse.
> In code it may be expressed as follows: 
> {code:java}
> tuples.groupBy(1)
>       .combineGroup((it, collector) -> {
>          // store first item for future use
>          Pojo stored = it.next();
>          while (it.hasNext()) {
>            ....
>          }
>       })
> {code}
> It seems even the object reuse feature is disabled, my instance is actually replaced when {{.next()}} is called on the iterator. It leads to very confusing and wrong results.
> I checked the Flink codebase and it seems {{CombiningUnilateralSortMerger}} is actually reusing object instances even though object reuse is explicitly disabled.
> In spilling phase user's combiner is called with instance of {{CombineValueIterator}} that actually reuses instances without any warning.
> See https://github.com/apache/flink/blob/d7b59d761601baba6765bb4fc407bcd9fd6a9387/flink-runtime/src/main/java/org/apache/flink/runtime/operators/sort/CombiningUnilateralSortMerger.java#L550
> When I disable combiner and use {{groupReduce}} only with the same reduce function, results are fine.
> Please let me know if you can confirm this as a bug. From my point of view it's highly critical as I am getting unpredictable results.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)