Hi,

I have come across a bug with timer output timestamp - when using event time and relative timers, setting the timer can arbitrarily throw IllegalArgumentException if the firing timestamp (input watermark) is ahead of the output timestamp (like .java.lang.IllegalArgumentException: Attempted to set an event-time timer with an output timestamp of 2021-04-29T07:16:19.369Z that is after the timer firing timestamp -290308-12-21T19:59:05.225Z). But there is no way to access the firing timestamp from user code. This means that the use has to either catch the IllegalArgumentException, or not use this construct at all.

Catching the exception should probably not be part of a contract, so we should do one of the following:

 a) either throw the exception right away and disable using relative timers with output timestamp completely, or

 b) support it correctly

What is the actual reason not to support output timestamps, that are ahead of firing timestamp? From my understanding, that should not be an issue, because there is TimestampCombiner.EARLIEST on the watermarkholdstate that corresponds to the output timestamp. If that is correct can we simply remove the check?

 Jan

Reply via email to