[
https://issues.apache.org/jira/browse/FLINK-4862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15595035#comment-15595035
]
ASF GitHub Bot commented on FLINK-4862:
---------------------------------------
Github user mxm commented on a diff in the pull request:
https://github.com/apache/flink/pull/2671#discussion_r84464275
--- Diff:
flink-streaming-java/src/main/java/org/apache/flink/streaming/api/windowing/triggers/ContinuousEventTimeTrigger.java
---
@@ -45,6 +45,12 @@
private final ReducingStateDescriptor<Long> stateDesc =
new ReducingStateDescriptor<>("fire-time", new Min(),
LongSerializer.INSTANCE);
+ /**
+ * Used to preserve the fire timestamp before merge such that
+ * the corresponding timer could be cleared after merge
+ */
+ private Long cachedFireTimestamp = null;
--- End diff --
This doesn't work because there is only one `Trigger` instance and this
will potentially be overwritten by many Windows being merged.
> NPE on EventTimeSessionWindows with ContinuousEventTimeTrigger
> --------------------------------------------------------------
>
> Key: FLINK-4862
> URL: https://issues.apache.org/jira/browse/FLINK-4862
> Project: Flink
> Issue Type: Bug
> Components: Streaming, Windowing Operators
> Affects Versions: 1.2.0, 1.1.3
> Reporter: Manu Zhang
> Assignee: Manu Zhang
> Fix For: 1.2.0, 1.1.4
>
>
> h3. what's the error ?
> The following NPE error is thrown when EventTimeSessionWindows with
> ContinuousEventTimeTrigger is used.
> {code}
> Caused by: java.lang.NullPointerException
> at
> org.apache.flink.streaming.api.windowing.triggers.ContinuousEventTimeTrigger.clear(ContinuousEventTimeTrigger.java:91)
> at
> org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.clear(WindowOperator.java:768)
> at
> org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$2.merge(WindowOperator.java:310)
> at
> org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$2.merge(WindowOperator.java:297)
> at
> org.apache.flink.streaming.runtime.operators.windowing.MergingWindowSet.addWindow(MergingWindowSet.java:196)
> at
> org.apache.flink.streaming.runtime.operators.windowing.WindowOperator.processElement(WindowOperator.java:297)
> at
> org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:183)
> at
> org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:66)
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:271)
> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:609)
> at java.lang.Thread.run(Thread.java:745)
> {code}
> h3. how to reproduce ?
> use {{ContinuousEventTimeTrigger}} instead of the default
> {{EventTimeTrigger}} in [SessionWindowing |
> https://github.com/apache/flink/blob/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/windowing/SessionWindowing.java#L84]
> example.
> h3. what's the cause ?
> When two session windows are being merged, the states of the two
> {{ContinuousEventTimeTrigger}} are merged as well and the new namespace is
> the merged window. Later when the context tries to delete {{Timer}} from the
> old trigger and looks up the timestamp by the old namespace, null value is
> returned.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)