I'm using flink 1.9 on Mesos and I try to use my own trigger and evictor.
The state is stored to memory.
input.setParallelism(processParallelism)
.assignTimestampsAndWatermarks(new UETimeAssigner)
.keyBy(_.key)
.window(TumblingEventTimeWindows.of(Time.minutes(20)))
.trigger(new MyTrigger)
.evictor(new MyEvictor)
.process(new MyFunction).setParallelism(aggregateParallelism)
.addSink(kafkaSink).setParallelism(sinkParallelism)
.name("kafka-record-sink")
And the exception stack is here, could anyone help with this? Thanks!
java.lang.Exception: Could not materialize checkpoint 1 for operator Window(
TumblingEventTimeWindows(1200000), JoinTrigger, JoinEvictor,
ScalaProcessWindowFunctionWrapper) -> Sink: kafka-record-sink (2/5).
at org.apache.flink.streaming.runtime.tasks.
StreamTask$AsyncCheckpointRunnable.handleExecutionException(StreamTask.java:
1100)
at org.apache.flink.streaming.runtime.tasks.
StreamTask$AsyncCheckpointRunnable.run(StreamTask.java:1042)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor
.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.lang.
ClassCastException: org.apache.flink.streaming.api.windowing.windows.
TimeWindow cannot be cast to org.apache.flink.runtime.state.VoidNamespace
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.flink.runtime.concurrent.FutureUtils.runIfNotDoneAndGet(
FutureUtils.java:450)
at org.apache.flink.streaming.api.operators.OperatorSnapshotFinalizer
.<init>(OperatorSnapshotFinalizer.java:47)
at org.apache.flink.streaming.runtime.tasks.
StreamTask$AsyncCheckpointRunnable.run(StreamTask.java:1011)
... 3 more
Caused by: java.lang.ClassCastException:
org.apache.flink.streaming.api.windowing.windows.TimeWindow cannot be cast
to org.apache.flink.runtime.state.VoidNamespace
at org.apache.flink.runtime.state.VoidNamespaceSerializer.serialize(
VoidNamespaceSerializer.java:32)
at org.apache.flink.runtime.state.heap.CopyOnWriteStateMapSnapshot
.writeState(CopyOnWriteStateMapSnapshot.java:114)
at org.apache.flink.runtime.state.heap.AbstractStateTableSnapshot
.writeStateInKeyGroup(AbstractStateTableSnapshot.java:121)
at org.apache.flink.runtime.state.heap.CopyOnWriteStateTableSnapshot
.writeStateInKeyGroup(CopyOnWriteStateTableSnapshot.java:37)
at org.apache.flink.runtime.state.heap.HeapSnapshotStrategy$1
.callInternal(HeapSnapshotStrategy.java:191)
at org.apache.flink.runtime.state.heap.HeapSnapshotStrategy$1
.callInternal(HeapSnapshotStrategy.java:158)
at org.apache.flink.runtime.state.AsyncSnapshotCallable.call(
AsyncSnapshotCallable.java:75)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.flink.runtime.concurrent.FutureUtils.runIfNotDoneAndGet(
FutureUtils.java:447)
... 5 more
--
Best regards
Sili Liu