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

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

GitHub user andrewpalumbo opened a pull request:

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

    FLINK-3762: StackOverflowError due to disabled Kryo Reference tracking

    cription
    
    As discussed on the dev list,
    
    In `KryoSerializer.java`
    
    Kryo Reference tracking is disabled by default:
    ```java
        kryo.setReferences(false);
    ```
    This can causes StackOverflowError Exceptions when serializing many objects 
that may contain recursive objects:
    ```
    java.lang.StackOverflowError
        at 
com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:48)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
        at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:523)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:61)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
        at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:523)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:61)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
        at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:523)
        at 
com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:61)
        at 
com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
    ```
    By enabling reference tracking, we can fix this problem.
    
    [1]https://gist.github.com/andrewpalumbo/40c7422a5187a24cd03d7d81feb2a419


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

    $ git pull https://github.com/andrewpalumbo/flink FLINK-3762

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

    https://github.com/apache/flink/pull/1891.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 #1891
    
----
commit 72f5bad9ebb1e657336e2c3e8ea8eb9ee283f693
Author: Andrew Palumbo <apalu...@apache.org>
Date:   2016-04-14T18:25:46Z

    FLINK-3762: enable kryo refrence tracking

----


>  Kryo StackOverflowError due to disabled Kryo Reference tracking
> ----------------------------------------------------------------
>
>                 Key: FLINK-3762
>                 URL: https://issues.apache.org/jira/browse/FLINK-3762
>             Project: Flink
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.0.1
>            Reporter: Andrew Palumbo
>             Fix For: 1.0.2
>
>
> As discussed on the dev list,
> In {{KryoSerializer.java}}
> Kryo Reference tracking is disabled by default:
> {code}
>     kryo.setReferences(false);
> {code}
> This can causes  {{StackOverflowError}} Exceptions when serializing many 
> objects that may contain recursive objects:
> {code}
> java.lang.StackOverflowError
>       at 
> com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:48)
>       at 
> com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
>       at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:523)
>       at 
> com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:61)
>       at 
> com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
>       at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:523)
>       at 
> com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:61)
>       at 
> com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
>       at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:523)
>       at 
> com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:61)
>       at 
> com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
> {code}
> By enabling reference tracking, we can fix this problem.
> [1]https://gist.github.com/andrewpalumbo/40c7422a5187a24cd03d7d81feb2a419
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to