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
- Timer.withOutputTimestamp().offset().setRelative seems unu... Jan Lukavský
-