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

TypeExtractor does not correctly analyze Scala Immutables (AnyVal)

    XMLWordPrintableJSON

Details

    Description

      This example program only works correctly if Kryo is force-enabled.

      object Test {
        class Id(val underlying: Int) extends AnyVal
      
        class X(var id: Id) {
          def this() { this(new Id(0)) }
        }
      
        class MySource extends SourceFunction[X] {
          def run(ctx: SourceFunction.SourceContext[X]) {
            ctx.collect(new X(new Id(1)))
          }
          def cancel() {}
        }
      
        def main(args: Array[String]) {
          val env = StreamExecutionContext.getExecutionContext
          env.addSource(new MySource).print
          env.execute("Test")
        }
      }
      

      The program fails with this:

      Caused by: java.lang.RuntimeException: Cannot instantiate class.
      	at org.apache.flink.api.java.typeutils.runtime.PojoSerializer.createInstance(PojoSerializer.java:227)
      	at org.apache.flink.api.java.typeutils.runtime.PojoSerializer.deserialize(PojoSerializer.java:421)
      	at org.apache.flink.streaming.runtime.streamrecord.StreamRecordSerializer.deserialize(StreamRecordSerializer.java:110)
      	at org.apache.flink.streaming.runtime.streamrecord.StreamRecordSerializer.deserialize(StreamRecordSerializer.java:41)
      	at org.apache.flink.runtime.plugable.NonReusingDeserializationDelegate.read(NonReusingDeserializationDelegate.java:55)
      	at org.apache.flink.runtime.io.network.api.serialization.SpillingAdaptiveSpanningRecordDeserializer.getNextRecord(SpillingAdaptiveSpanningRecordDeserializer.java:125)
      	at org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:136)
      	at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:55)
      	at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:198)
      	at org.apache.flink.runtime.taskmanager.Task.run(Task.java:579)
      	at java.lang.Thread.run(Thread.java:745)
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            aljoscha Aljoscha Krettek
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: