[ https://issues.apache.org/jira/browse/BEAM-9557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17066280#comment-17066280 ]
Steve Niemitz commented on BEAM-9557: ------------------------------------- The default case will work as you mentioned, but if the validation is on output time, I could set an event time timer for eg: given a window end = 03:00:00 outputTimestamp = 02:59:59 target = 03:05:00 The timer will hold the watermark correctly, but the state cleanup timer will fire at 03:00:00 (since it fires off the input watermark) and clean up the state in that window, then my timer will fire 5 minutes later and observe up an empty state. The current validation catches this and will reject the timer. > Error setting processing time timers near end-of-window > ------------------------------------------------------- > > Key: BEAM-9557 > URL: https://issues.apache.org/jira/browse/BEAM-9557 > Project: Beam > Issue Type: Bug > Components: runner-core > Reporter: Steve Niemitz > Assignee: Reuven Lax > Priority: Critical > Fix For: 2.20.0 > > > Previously, it was possible to set a processing time timer past the end of a > window, and it would simply not fire. > However, now, this results in an error: > {code:java} > java.lang.IllegalArgumentException: Attempted to set event time timer that > outputs for 2020-03-19T18:01:35.000Z but that is after the expiration of > window 2020-03-19T17:59:59.999Z > > org.apache.beam.vendor.guava.v26_0_jre.com.google.common.base.Preconditions.checkArgument(Preconditions.java:440) > > org.apache.beam.runners.dataflow.worker.repackaged.org.apache.beam.runners.core.SimpleDoFnRunner$TimerInternalsTimer.setAndVerifyOutputTimestamp(SimpleDoFnRunner.java:1011) > > org.apache.beam.runners.dataflow.worker.repackaged.org.apache.beam.runners.core.SimpleDoFnRunner$TimerInternalsTimer.setRelative(SimpleDoFnRunner.java:934) > <snip>.processElement(???.scala:187) > {code} > > I think the regression was introduced in commit > a005fd765a762183ca88df90f261f6d4a20cf3e0. Also notice that the error message > is wrong, it says that "event time timer" but the timer is in the processing > time domain. -- This message was sent by Atlassian Jira (v8.3.4#803005)