Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-3762

Kryo StackOverflowError due to disabled Kryo Reference tracking

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.0.1
    • 1.0.2, 1.1.0
    • None
    • None

    Description

      As discussed on the dev list,

      In KryoSerializer.java

      Kryo Reference tracking is disabled by default:

          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

      Attachments

        Activity

          People

            Andrew_Palumbo Andrew Palumbo
            Andrew_Palumbo Andrew Palumbo
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: