Thanks for the KIP!

I pretty much echo what Matthias has said so far regarding the API.

Regarding #4-5, assuming we would just be leaving out stream-time in the
initial implementation for time/scope reasons and might want to add this in
the future, I think it's best to just throw an exception if this is used
with STREAM_TIME for now. Especially if it's only a short time before we
support stream-time, which seems likely unless for some reason it is
significantly more difficult to implement this for stream-time vs for
wall-clock time. And I can't imagine that it would be.

As for the actual semantics, perhaps it would be useful to include a brief
example including how it behaves on startup/after a restart.

Let's say you schedule a punctuation with a start time of 100 and an
interval of 10 seconds. If you first start up at t=201, my understanding is
that you'd wait until t=210 to trigger the first punctuation, and after
that they would proceed as usual in 10s increments?
So if your app happened to shut down at t=209 and didn't come back up again
until t=211, you would miss the punctuation at t=210 and would have to wait
until t=220 to run the punctuator?

That's more or less how the punctuator works now, just want to make sure
this is clear in the KIP.

In fact, this KIP seems to actually remedy a long-standing issue with
wall-clock punctuators, which is that they'll never be triggered if the app
or task is restarted within the punctuation interval. With anchored
punctuations you can technically still miss the punctuation if it restarts
exactly when it was scheduled, but that should be fairly rare, so in
general frequent restarts won't be a problem for punctuations anymore. Neat!

On Tue, Apr 1, 2025 at 6:12 PM Matthias J. Sax <mj...@apache.org> wrote:

> Herman,
>
> thanks for the KIP, and sorry for late response. Overall the KIP makes
> sense to me, and the propose API change is neat and contained, so I
> don't have any concerns about it.
>
> Couple of questions/comments.
>
> (1) I think the propose `startTime` parameter should not be a `long` but
> in `Instance` type?
>
>
> (2) What happens is the passed in `startTime` is in the past? Would an
> exception be thrown? Or just "skip forward" to the next "firing point"
> in the future?
>
>
> (3) The KIP says
>
> > It is planned that only wall clock (i.e. stream time) is supported in
> this first iteration.
>
> This is confusing. Wall-clock time is not the same as stream time. Maybe
> just a typo.
>
>
> (4) Why are you excluding "stream time"? Also, the KIP does not define
> what happens if the new overload is used in combination with "stream
> time" -- I assume the method would throw an exception, what might not be
> ideal API ergonomics (cf (5) below).
>
> (5) If we really want to exclude "stream-time", I am wondering if we
> could use
>
>      Cancellable schedule(final Duration interval, final long startTime,
> final Punctuator callback)
>
> instead, omitting the `PunctuationType` parameter and document clearly
> in the JavaDocs that wall-clock time punctuation are used. This way,
> users cannot write incorrect code and don't need to worry about exceptions.
>
>
>
>
> -Matthias
>
>
> On 3/22/25 1:24 AM, Herman K. Jakobsen wrote:
> > Hi all,
> >
> > I would like to start a discussion thread on
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1146%3A+Anchored+wall-clock+punctuation
> >
> > Best regards,
> > Herman
> >
>
>

Reply via email to