Thanks Ewen.

@Michal, @all, I have created a child page to start the Use Cases discussion 
[https://cwiki.apache.org/confluence/display/KAFKA/Punctuate+Use+Cases]. Please 
go through it and give your comments.

@Tianji, Sorry for the delay. I am trying to make the patch public.

--
Arun Mathew

On 4/8/17, 02:00, "Ewen Cheslack-Postava" <e...@confluent.io> wrote:

    Arun,
    
    I've given you permission to edit the wiki. Let me know if you run into any
    issues.
    
    -Ewen
    
    On Fri, Apr 7, 2017 at 1:21 AM, Arun Mathew <amat...@yahoo-corp.jp> wrote:
    
    > Thanks Michal. I don’t have the access yet [arunmathew88]. Should I be
    > sending a separate mail for this?
    >
    > I thought one of the person following this thread would be able to give me
    > access.
    >
    >
    >
    > *From: *Michal Borowiecki <michal.borowie...@openbet.com>
    > *Reply-To: *"dev@kafka.apache.org" <dev@kafka.apache.org>
    > *Date: *Friday, April 7, 2017 at 17:16
    > *To: *"dev@kafka.apache.org" <dev@kafka.apache.org>
    > *Subject: *Re: [DISCUSS] KIP-138: Change punctuate semantics
    >
    >
    >
    > Hi Arun,
    >
    > I was thinking along the same lines as you, listing the use cases on the
    > wiki, but didn't find time to get around doing that yet.
    > Don't mind if you do it if you have access now.
    > I was thinking it would be nice if, once we have the use cases listed,
    > people could use likes to up-vote the use cases similar to what they're
    > working on.
    >
    > I should have a bit more time to action this in the next few days, but
    > happy for you to do it if you can beat me to it ;-)
    >
    > Cheers,
    > Michal
    >
    > On 07/04/17 04:39, Arun Mathew wrote:
    >
    > Sure, Thanks Matthias. My id is [arunmathew88].
    >
    >
    >
    > Of course. I was thinking of a subpage where people can collaborate.
    >
    >
    >
    > Will do as per Michael’s suggestion.
    >
    >
    >
    > Regards,
    >
    > Arun Mathew
    >
    >
    >
    > On 4/7/17, 12:30, "Matthias J. Sax" <matth...@confluent.io> 
<matth...@confluent.io> wrote:
    >
    >
    >
    >     Please share your Wiki-ID and a committer can give you write access.
    >
    >
    >
    >     Btw: as you did not initiate the KIP, you should not change the KIP
    >
    >     without the permission of the original author -- in this case Michael.
    >
    >
    >
    >     So you might also just share your thought over the mailing list and
    >
    >     Michael can update the KIP page. Or, as an alternative, just create a
    >
    >     subpage for the KIP page.
    >
    >
    >
    >     @Michael: WDYT?
    >
    >
    >
    >
    >
    >     -Matthias
    >
    >
    >
    >
    >
    >     On 4/6/17 8:05 PM, Arun Mathew wrote:
    >
    >     > Hi Jay,
    >
    >     >           Thanks for the advise, I would like to list down the use 
cases as
    >
    >     > per your suggestion. But it seems I don't have write permission to 
the
    >
    >     > Apache Kafka Confluent Space. Whom shall I request for it?
    >
    >     >
    >
    >     > Regarding your last question. We are using a patch in our 
production system
    >
    >     > which does exactly this.
    >
    >     > We window by the event time, but trigger punctuate in <punctuate 
interval>
    >
    >     > duration of system time, in the absence of an event crossing the 
punctuate
    >
    >     > event time.
    >
    >     >
    >
    >     > We are using Kafka Stream for our Audit Trail, where we need to 
output the
    >
    >     > event counts on each topic on each cluster aggregated over a 1 
minute
    >
    >     > window. We have to use event time to be able to cross check the 
counts. But
    >
    >     > we need to trigger punctuate [aggregate event pushes] by system 
time in the
    >
    >     > absence of events. Otherwise the event counts for unexpired windows 
would
    >
    >     > be 0 which is bad.
    >
    >     >
    >
    >     > "Maybe a hybrid solution works: I window by event time but trigger 
results
    >
    >     > by system time for windows that have updated? Not really sure the 
details
    >
    >     > of making that work. Does that work? Are there concrete examples 
where you
    >
    >     > actually want the current behavior?"
    >
    >     >
    >
    >     > --
    >
    >     > With Regards,
    >
    >     >
    >
    >     > Arun Mathew
    >
    >     > Yahoo! JAPAN Corporation
    >
    >     >
    >
    >     > On Wed, Apr 5, 2017 at 8:48 PM, Tianji Li <skyah...@gmail.com> 
<skyah...@gmail.com> wrote:
    >
    >     >
    >
    >     >> Hi Jay,
    >
    >     >>
    >
    >     >> The hybrid solution is exactly what I expect and need for our use 
cases
    >
    >     >> when dealing with telecom data.
    >
    >     >>
    >
    >     >> Thanks
    >
    >     >> Tianji
    >
    >     >>
    >
    >     >> On Wed, Apr 5, 2017 at 12:01 AM, Jay Kreps <j...@confluent.io> 
<j...@confluent.io> wrote:
    >
    >     >>
    >
    >     >>> Hey guys,
    >
    >     >>>
    >
    >     >>> One thing I've always found super important for this kind of 
design work
    >
    >     >> is
    >
    >     >>> to do a really good job of cataloging the landscape of use cases 
and how
    >
    >     >>> prevalent each one is. By that I mean not just listing lots of 
uses, but
    >
    >     >>> also grouping them into categories that functionally need the 
same thing.
    >
    >     >>> In the absence of this it is very hard to reason about design 
proposals.
    >
    >     >>> From the proposals so far I think we have a lot of discussion 
around
    >
    >     >>> possible apis, but less around what the user needs for different 
use
    >
    >     >> cases
    >
    >     >>> and how they would implement that using the api.
    >
    >     >>>
    >
    >     >>> Here is an example:
    >
    >     >>> You aggregate click and impression data for a reddit like site. 
Every ten
    >
    >     >>> minutes you want to output a ranked list of the top 10 articles 
ranked by
    >
    >     >>> clicks/impressions for each geographical area. I want to be able 
run this
    >
    >     >>> in steady state as well as rerun to regenerate results (or catch 
up if it
    >
    >     >>> crashes).
    >
    >     >>>
    >
    >     >>> There are a couple of tricky things that seem to make this hard 
with
    >
    >     >> either
    >
    >     >>> of the options proposed:
    >
    >     >>> 1. If I emit this data using event time I have the problem 
described
    >
    >     >> where
    >
    >     >>> a geographical region with no new clicks or impressions will fail 
to
    >
    >     >> output
    >
    >     >>> results.
    >
    >     >>> 2. If I emit this data using system time I have the problem that 
when
    >
    >     >>> reprocessing data my window may not be ten minutes but 10 hours 
if my
    >
    >     >>> processing is very fast so it dramatically changes the output.
    >
    >     >>>
    >
    >     >>> Maybe a hybrid solution works: I window by event time but trigger 
results
    >
    >     >>> by system time for windows that have updated? Not really sure the 
details
    >
    >     >>> of making that work. Does that work? Are there concrete examples 
where
    >
    >     >> you
    >
    >     >>> actually want the current behavior?
    >
    >     >>>
    >
    >     >>> -Jay
    >
    >     >>>
    >
    >     >>>
    >
    >     >>> On Tue, Apr 4, 2017 at 8:32 PM, Arun Mathew 
<arunmathe...@gmail.com> <arunmathe...@gmail.com>
    >
    >     >>> wrote:
    >
    >     >>>
    >
    >     >>>> Hi All,
    >
    >     >>>>
    >
    >     >>>> Thanks for the KIP. We were also in need of a mechanism to 
trigger
    >
    >     >>>> punctuate in the absence of events.
    >
    >     >>>>
    >
    >     >>>> As I described in [
    >
    >     >>>> https://issues.apache.org/jira/browse/KAFKA-3514?
    >
    >     >>>> focusedCommentId=15926036&page=com.atlassian.jira.
    >
    >     >>>> plugin.system.issuetabpanels:comment-tabpanel#comment-15926036
    >
    >     >>>> ],
    >
    >     >>>>
    >
    >     >>>>    - Our approached involved using the event time by default.
    >
    >     >>>>    - The method to check if there is any punctuate ready in the
    >
    >     >>>>    PunctuationQueue is triggered via the any event received by 
the
    >
    >     >> stream
    >
    >     >>>>    tread, or at the polling intervals in the absence of any 
events.
    >
    >     >>>>    - When we create Punctuate objects (which contains the next 
event
    >
    >     >> time
    >
    >     >>>>    for punctuation and interval), we also record the creation 
time
    >
    >     >>> (system
    >
    >     >>>>    time).
    >
    >     >>>>    - While checking for maturity of Punctuate Schedule by
    >
    >     >> mayBePunctuate
    >
    >     >>>>    method, we also check if the system clock has elapsed the 
punctuate
    >
    >     >>>>    interval since the schedule creation time.
    >
    >     >>>>    - In the absence of any event, or in the absence of any event 
for
    >
    >     >> one
    >
    >     >>>>    topic in the partition group assigned to the stream task, the 
system
    >
    >     >>>> time
    >
    >     >>>>    will elapse the interval and we trigger a punctuate using the
    >
    >     >> expected
    >
    >     >>>>    punctuation event time.
    >
    >     >>>>    - we then create the next punctuation schedule as punctuation 
event
    >
    >     >>> time
    >
    >     >>>>    + punctuation interval, [again recording the system time of 
creation
    >
    >     >>> of
    >
    >     >>>> the
    >
    >     >>>>    schedule].
    >
    >     >>>>
    >
    >     >>>> We call this a Hybrid Punctuate. Of course, this approach has 
pros and
    >
    >     >>>> cons.
    >
    >     >>>> Pros
    >
    >     >>>>
    >
    >     >>>>    - Punctuates will happen in <punctuate interval> time 
duration at
    >
    >     >> max
    >
    >     >>> in
    >
    >     >>>>    terms of system time.
    >
    >     >>>>    - The semantics as a whole continues to revolve around event 
time.
    >
    >     >>>>    - We can use the old data [old timestamps] to rerun any 
experiments
    >
    >     >> or
    >
    >     >>>>    tests.
    >
    >     >>>>
    >
    >     >>>> Cons
    >
    >     >>>>
    >
    >     >>>>    - In case the  <punctuate interval> is not a time duration 
[say
    >
    >     >>> logical
    >
    >     >>>>    time/event count], then the approach might not be meaningful.
    >
    >     >>>>    - In case there is a case where we have to wait for an actual 
event
    >
    >     >>> from
    >
    >     >>>>    a low event rate partition in the partition group, this 
approach
    >
    >     >> will
    >
    >     >>>> jump
    >
    >     >>>>    the gun.
    >
    >     >>>>    - in case the event processing cannot catch up with the event 
rate
    >
    >     >> and
    >
    >     >>>>    the expected timestamp events gets queued for long time, this
    >
    >     >> approach
    >
    >     >>>>    might jump the gun.
    >
    >     >>>>
    >
    >     >>>> I believe the above approach and discussion goes close to the 
approach
    >
    >     >> A.
    >
    >     >>>>
    >
    >     >>>> -----------
    >
    >     >>>>
    >
    >     >>>> I like the idea of having an even count based punctuate.
    >
    >     >>>>
    >
    >     >>>> -----------
    >
    >     >>>>
    >
    >     >>>> I agree with the discussion around approach C, that we should 
provide
    >
    >     >> the
    >
    >     >>>> user with the option to choose system time or event time based
    >
    >     >>> punctuates.
    >
    >     >>>> But I believe that the user predominantly wants to use event 
time while
    >
    >     >>> not
    >
    >     >>>> missing out on regular punctuates due to event delays or event
    >
    >     >> absences.
    >
    >     >>>> Hence a complex punctuate option as Matthias mentioned (quoted 
below)
    >
    >     >>> would
    >
    >     >>>> be most apt.
    >
    >     >>>>
    >
    >     >>>> "- We might want to add "complex" schedules later on (like, 
punctuate
    >
    >     >> on
    >
    >     >>>> every 10 seconds event-time or 60 seconds system-time whatever 
comes
    >
    >     >>>> first)."
    >
    >     >>>>
    >
    >     >>>> -----------
    >
    >     >>>>
    >
    >     >>>> I think I read somewhere that Kafka Streams started with System 
Time as
    >
    >     >>> the
    >
    >     >>>> punctuation standard, but was later changed to Event Time. I 
guess
    >
    >     >> there
    >
    >     >>>> would be some good reason behind it. As Kafka Streams want to 
evolve
    >
    >     >> more
    >
    >     >>>> on the Stream Processing front, I believe the emphasis on event 
time
    >
    >     >>> would
    >
    >     >>>> remain quite strong.
    >
    >     >>>>
    >
    >     >>>>
    >
    >     >>>> With Regards,
    >
    >     >>>>
    >
    >     >>>> Arun Mathew
    >
    >     >>>> Yahoo! JAPAN Corporation, Tokyo
    >
    >     >>>>
    >
    >     >>>>
    >
    >     >>>> On Wed, Apr 5, 2017 at 3:53 AM, Thomas Becker 
<tobec...@tivo.com> <tobec...@tivo.com>
    >
    >     >> wrote:
    >
    >     >>>>
    >
    >     >>>>> Yeah I like PuncutationType much better; I just threw Time out 
there
    >
    >     >>>>> more as a strawman than an actual suggestion ;) I still think 
it's
    >
    >     >>>>> worth considering what this buys us over an additional 
callback. I
    >
    >     >>>>> foresee a number of punctuate implementations following this 
pattern:
    >
    >     >>>>>
    >
    >     >>>>> public void punctuate(PunctuationType type) {
    >
    >     >>>>>     switch (type) {
    >
    >     >>>>>         case EVENT_TIME:
    >
    >     >>>>>             methodA();
    >
    >     >>>>>             break;
    >
    >     >>>>>         case SYSTEM_TIME:
    >
    >     >>>>>             methodB();
    >
    >     >>>>>             break;
    >
    >     >>>>>     }
    >
    >     >>>>> }
    >
    >     >>>>>
    >
    >     >>>>> I guess one advantage of this approach is we could add 
additional
    >
    >     >>>>> punctuation types later in a backwards compatible way (like 
event
    >
    >     >> count
    >
    >     >>>>> as you mentioned).
    >
    >     >>>>>
    >
    >     >>>>> -Tommy
    >
    >     >>>>>
    >
    >     >>>>>
    >
    >     >>>>> On Tue, 2017-04-04 at 11:10 -0700, Matthias J. Sax wrote:
    >
    >     >>>>>> That sounds promising.
    >
    >     >>>>>>
    >
    >     >>>>>> I am just wondering if `Time` is the best name. Maybe we want 
to
    >
    >     >> add
    >
    >     >>>>>> other non-time based punctuations at some point later. I would
    >
    >     >>>>>> suggest
    >
    >     >>>>>>
    >
    >     >>>>>> enum PunctuationType {
    >
    >     >>>>>>   EVENT_TIME,
    >
    >     >>>>>>   SYSTEM_TIME,
    >
    >     >>>>>> }
    >
    >     >>>>>>
    >
    >     >>>>>> or similar. Just to keep the door open -- it's easier to add 
new
    >
    >     >>>>>> stuff
    >
    >     >>>>>> if the name is more generic.
    >
    >     >>>>>>
    >
    >     >>>>>>
    >
    >     >>>>>> -Matthias
    >
    >     >>>>>>
    >
    >     >>>>>>
    >
    >     >>>>>> On 4/4/17 5:30 AM, Thomas Becker wrote:
    >
    >     >>>>>>>
    >
    >     >>>>>>> I agree that the framework providing and managing the notion 
of
    >
    >     >>>>>>> stream
    >
    >     >>>>>>> time is valuable and not something we would want to delegate 
to
    >
    >     >> the
    >
    >     >>>>>>> tasks. I'm not entirely convinced that a separate callback
    >
    >     >> (option
    >
    >     >>>>>>> C)
    >
    >     >>>>>>> is that messy (it could just be a default method with an empty
    >
    >     >>>>>>> implementation), but if we wanted a single API to handle both
    >
    >     >>>>>>> cases,
    >
    >     >>>>>>> how about something like the following?
    >
    >     >>>>>>>
    >
    >     >>>>>>> enum Time {
    >
    >     >>>>>>>    STREAM,
    >
    >     >>>>>>>    CLOCK
    >
    >     >>>>>>> }
    >
    >     >>>>>>>
    >
    >     >>>>>>> Then on ProcessorContext:
    >
    >     >>>>>>> context.schedule(Time time, long interval)  // We could allow
    >
    >     >> this
    >
    >     >>>>>>> to
    >
    >     >>>>>>> be called once for each value of time to mix approaches.
    >
    >     >>>>>>>
    >
    >     >>>>>>> Then the Processor API becomes:
    >
    >     >>>>>>> punctuate(Time time) // time here denotes which schedule 
resulted
    >
    >     >>>>>>> in
    >
    >     >>>>>>> this call.
    >
    >     >>>>>>>
    >
    >     >>>>>>> Thoughts?
    >
    >     >>>>>>>
    >
    >     >>>>>>>
    >
    >     >>>>>>> On Mon, 2017-04-03 at 22:44 -0700, Matthias J. Sax wrote:
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> Thanks a lot for the KIP Michal,
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> I was thinking about the four options you proposed in more
    >
    >     >>>>>>>> details
    >
    >     >>>>>>>> and
    >
    >     >>>>>>>> this are my thoughts:
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> (A) You argue, that users can still "punctuate" on event-time
    >
    >     >> via
    >
    >     >>>>>>>> process(), but I am not sure if this is possible. Note, that
    >
    >     >>>>>>>> users
    >
    >     >>>>>>>> only
    >
    >     >>>>>>>> get record timestamps via context.timestamp(). Thus, users
    >
    >     >> would
    >
    >     >>>>>>>> need
    >
    >     >>>>>>>> to
    >
    >     >>>>>>>> track the time progress per partition (based on the 
partitions
    >
    >     >>>>>>>> they
    >
    >     >>>>>>>> obverse via context.partition(). (This alone puts a huge 
burden
    >
    >     >>>>>>>> on
    >
    >     >>>>>>>> the
    >
    >     >>>>>>>> user by itself.) However, users are not notified at startup
    >
    >     >> what
    >
    >     >>>>>>>> partitions are assigned, and user are not notified when
    >
    >     >>>>>>>> partitions
    >
    >     >>>>>>>> get
    >
    >     >>>>>>>> revoked. Because this information is not available, it's not
    >
    >     >>>>>>>> possible
    >
    >     >>>>>>>> to
    >
    >     >>>>>>>> "manually advance" stream-time, and thus event-time 
punctuation
    >
    >     >>>>>>>> within
    >
    >     >>>>>>>> process() seems not to be possible -- or do you see a way to
    >
    >     >> get
    >
    >     >>>>>>>> it
    >
    >     >>>>>>>> done? And even if, it might still be too clumsy to use.
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> (B) This does not allow to mix both approaches, thus limiting
    >
    >     >>>>>>>> what
    >
    >     >>>>>>>> users
    >
    >     >>>>>>>> can do.
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> (C) This should give all flexibility we need. However, just
    >
    >     >>>>>>>> adding
    >
    >     >>>>>>>> one
    >
    >     >>>>>>>> more method seems to be a solution that is too simple (cf my
    >
    >     >>>>>>>> comments
    >
    >     >>>>>>>> below).
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> (D) This might be hard to use. Also, I am not sure how a user
    >
    >     >>>>>>>> could
    >
    >     >>>>>>>> enable system-time and event-time punctuation in parallel.
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> Overall options (C) seems to be the most promising approach 
to
    >
    >     >>>>>>>> me.
    >
    >     >>>>>>>> Because I also favor a clean API, we might keep current
    >
    >     >>>>>>>> punctuate()
    >
    >     >>>>>>>> as-is, but deprecate it -- so we can remove it at some later
    >
    >     >>>>>>>> point
    >
    >     >>>>>>>> when
    >
    >     >>>>>>>> people use the "new punctuate API".
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> Couple of follow up questions:
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> - I am wondering, if we should have two callback methods or
    >
    >     >> just
    >
    >     >>>>>>>> one
    >
    >     >>>>>>>> (ie, a unified for system and event time punctuation or one 
for
    >
    >     >>>>>>>> each?).
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> - If we have one, how can the user figure out, which 
condition
    >
    >     >>>>>>>> did
    >
    >     >>>>>>>> trigger?
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> - How would the API look like, for registering different
    >
    >     >>>>>>>> punctuate
    >
    >     >>>>>>>> schedules? The "type" must be somehow defined?
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> - We might want to add "complex" schedules later on (like,
    >
    >     >>>>>>>> punctuate
    >
    >     >>>>>>>> on
    >
    >     >>>>>>>> every 10 seconds event-time or 60 seconds system-time 
whatever
    >
    >     >>>>>>>> comes
    >
    >     >>>>>>>> first). I don't say we should add this right away, but we 
might
    >
    >     >>>>>>>> want
    >
    >     >>>>>>>> to
    >
    >     >>>>>>>> define the API in a way, that it allows extensions like this
    >
    >     >>>>>>>> later
    >
    >     >>>>>>>> on,
    >
    >     >>>>>>>> without redesigning the API (ie, the API should be designed
    >
    >     >>>>>>>> extensible)
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> - Did you ever consider count-based punctuation?
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> I understand, that you would like to solve a simple problem,
    >
    >     >> but
    >
    >     >>>>>>>> we
    >
    >     >>>>>>>> learned from the past, that just "adding some API" quickly
    >
    >     >> leads
    >
    >     >>>>>>>> to a
    >
    >     >>>>>>>> not very well defined API that needs time consuming clean up
    >
    >     >>>>>>>> later on
    >
    >     >>>>>>>> via other KIPs. Thus, I would prefer to get a holistic
    >
    >     >>>>>>>> punctuation
    >
    >     >>>>>>>> KIP
    >
    >     >>>>>>>> with this from the beginning on to avoid later painful
    >
    >     >> redesign.
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> -Matthias
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>>
    >
    >     >>>>>>>> On 4/3/17 11:58 AM, Michal Borowiecki wrote:
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> Thanks Thomas,
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> I'm also wary of changing the existing semantics of
    >
    >     >> punctuate,
    >
    >     >>>>>>>>> for
    >
    >     >>>>>>>>> backward compatibility reasons, although I like the
    >
    >     >> conceptual
    >
    >     >>>>>>>>> simplicity of that option.
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> Adding a new method to me feels safer but, in a way, uglier.
    >
    >     >> I
    >
    >     >>>>>>>>> added
    >
    >     >>>>>>>>> this to the KIP now as option (C).
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> The TimestampExtractor mechanism is actually more flexible,
    >
    >     >> as
    >
    >     >>>>>>>>> it
    >
    >     >>>>>>>>> allows
    >
    >     >>>>>>>>> you to return any value, you're not limited to event time or
    >
    >     >>>>>>>>> system
    >
    >     >>>>>>>>> time
    >
    >     >>>>>>>>> (although I don't see an actual use case where you might 
need
    >
    >     >>>>>>>>> anything
    >
    >     >>>>>>>>> else then those two). Hence I also proposed the option to
    >
    >     >> allow
    >
    >     >>>>>>>>> users
    >
    >     >>>>>>>>> to, effectively, decide what "stream time" is for them given
    >
    >     >>>>>>>>> the
    >
    >     >>>>>>>>> presence or absence of messages, much like they can decide
    >
    >     >> what
    >
    >     >>>>>>>>> msg
    >
    >     >>>>>>>>> time
    >
    >     >>>>>>>>> means for them using the TimestampExtractor. What do you
    >
    >     >> think
    >
    >     >>>>>>>>> about
    >
    >     >>>>>>>>> that? This is probably most flexible but also most
    >
    >     >> complicated.
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> All comments appreciated.
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> Cheers,
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> Michal
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>>
    >
    >     >>>>>>>>> On 03/04/17 19:23, Thomas Becker wrote:
    >
    >     >>>>>>>>>>
    >
    >     >>>>>>>>>>
    >
    >     >>>>>>>>>> Although I fully agree we need a way to trigger periodic
    >
    >     >>>>>>>>>> processing
    >
    >     >>>>>>>>>> that is independent from whether and when messages arrive,
    >
    >     >>>>>>>>>> I'm
    >
    >     >>>>>>>>>> not sure
    >
    >     >>>>>>>>>> I like the idea of changing the existing semantics across
    >
    >     >> the
    >
    >     >>>>>>>>>> board.
    >
    >     >>>>>>>>>> What if we added an additional callback to Processor that
    >
    >     >> can
    >
    >     >>>>>>>>>> be
    >
    >     >>>>>>>>>> scheduled similarly to punctuate() but was always called at
    >
    >     >>>>>>>>>> fixed, wall
    >
    >     >>>>>>>>>> clock based intervals? This way you wouldn't have to give
    >
    >     >> up
    >
    >     >>>>>>>>>> the
    >
    >     >>>>>>>>>> notion
    >
    >     >>>>>>>>>> of stream time to be able to do periodic processing.
    >
    >     >>>>>>>>>>
    >
    >     >>>>>>>>>> On Mon, 2017-04-03 at 10:34 +0100, Michal Borowiecki wrote:
    >
    >     >>>>>>>>>>>
    >
    >     >>>>>>>>>>>
    >
    >     >>>>>>>>>>> Hi all,
    >
    >     >>>>>>>>>>>
    >
    >     >>>>>>>>>>> I have created a draft for KIP-138: Change punctuate
    >
    >     >>>>>>>>>>> semantics
    >
    >     >>>>>>>>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP- 
<https://cwiki.apache.org/confluence/display/KAFKA/KIP->
    >
    >     > <https://cwiki.apache.org/confluence/display/KAFKA/KIP->>> 138%
    >
    >     >>>>>>>>>>> 3A+C
    >
    >     >>>>>>>>>>> hange+
    >
    >     >>>>>>>>>>> punctuate+semantics>
    >
    >     >>>>>>>>>>> .
    >
    >     >>>>>>>>>>>
    >
    >     >>>>>>>>>>> Appreciating there can be different views on system-time
    >
    >     >> vs
    >
    >     >>>>>>>>>>> event-
    >
    >     >>>>>>>>>>> time
    >
    >     >>>>>>>>>>> semantics for punctuation depending on use-case and the
    >
    >     >>>>>>>>>>> importance of
    >
    >     >>>>>>>>>>> backwards compatibility of any such change, I've left it
    >
    >     >>>>>>>>>>> quite
    >
    >     >>>>>>>>>>> open
    >
    >     >>>>>>>>>>> and
    >
    >     >>>>>>>>>>> hope to fill in more info as the discussion progresses.
    >
    >     >>>>>>>>>>>
    >
    >     >>>>>>>>>>> Thanks,
    >
    >     >>>>>>>>>>> Michal
    >
    >     >>>>>>> --
    >
    >     >>>>>>>
    >
    >     >>>>>>>
    >
    >     >>>>>>>     Tommy Becker
    >
    >     >>>>>>>
    >
    >     >>>>>>>     Senior Software Engineer
    >
    >     >>>>>>>
    >
    >     >>>>>>>     O +1 919.460.4747 <(919)%20460-4747>
    >
    >     >>>>>>>
    >
    >     >>>>>>>     tivo.com
    >
    >     >>>>>>>
    >
    >     >>>>>>>
    >
    >     >>>>>>> ________________________________
    >
    >     >>>>>>>
    >
    >     >>>>>>> This email and any attachments may contain confidential and
    >
    >     >>>>>>> privileged material for the sole use of the intended 
recipient.
    >
    >     >> Any
    >
    >     >>>>>>> review, copying, or distribution of this email (or any
    >
    >     >> attachments)
    >
    >     >>>>>>> by others is prohibited. If you are not the intended 
recipient,
    >
    >     >>>>>>> please contact the sender immediately and permanently delete 
this
    >
    >     >>>>>>> email and any attachments. No employee or agent of TiVo Inc. 
is
    >
    >     >>>>>>> authorized to conclude any binding agreement on behalf of TiVo
    >
    >     >> Inc.
    >
    >     >>>>>>> by email. Binding agreements with TiVo Inc. may only be made 
by a
    >
    >     >>>>>>> signed written agreement.
    >
    >     >>>>>>>
    >
    >     >>>>> --
    >
    >     >>>>>
    >
    >     >>>>>
    >
    >     >>>>>     Tommy Becker
    >
    >     >>>>>
    >
    >     >>>>>     Senior Software Engineer
    >
    >     >>>>>
    >
    >     >>>>>     O +1 919.460.4747 <(919)%20460-4747>
    >
    >     >>>>>
    >
    >     >>>>>     tivo.com
    >
    >     >>>>>
    >
    >     >>>>>
    >
    >     >>>>> ________________________________
    >
    >     >>>>>
    >
    >     >>>>> This email and any attachments may contain confidential and
    >
    >     >> privileged
    >
    >     >>>>> material for the sole use of the intended recipient. Any review,
    >
    >     >>> copying,
    >
    >     >>>>> or distribution of this email (or any attachments) by others is
    >
    >     >>>> prohibited.
    >
    >     >>>>> If you are not the intended recipient, please contact the sender
    >
    >     >>>>> immediately and permanently delete this email and any 
attachments. No
    >
    >     >>>>> employee or agent of TiVo Inc. is authorized to conclude any 
binding
    >
    >     >>>>> agreement on behalf of TiVo Inc. by email. Binding agreements 
with
    >
    >     >> TiVo
    >
    >     >>>>> Inc. may only be made by a signed written agreement.
    >
    >     >>>>>
    >
    >     >>>>
    >
    >     >>>
    >
    >     >>
    >
    >     >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    > --
    >
    > <http://www.openbet.com/>
    >
    > *Michal Borowiecki*
    >
    > *Senior Software Engineer L4*
    >
    > *T: *
    >
    > +44 208 742 1600 <+44%2020%208742%201600>
    >
    > +44 203 249 8448 <+44%2020%203249%208448>
    >
    >
    >
    > *E: *
    >
    > michal.borowie...@openbet.com
    >
    > *W: *
    >
    > www.openbet.com
    >
    > *OpenBet Ltd*
    >
    > Chiswick Park Building 9
    >
    > 566 Chiswick High Rd
    >
    > London
    >
    > W4 5XT
    >
    > UK
    >
    > <https://www.openbet.com/email_promo>
    >
    >
    >
    > This message is confidential and intended only for the addressee. If you
    > have received this message in error, please immediately notify the
    > postmas...@openbet.com and delete it from your system as well as any
    > copies. The content of e-mails as well as traffic data may be monitored by
    > OpenBet for employment and security purposes. To protect the environment
    > please do not print this e-mail unless necessary. OpenBet Ltd. Registered
    > Office: Chiswick Park Building 9, 566 Chiswick High Road, London, W4 5XT,
    > United Kingdom. A company registered in England and Wales. Registered no.
    > 3134634. VAT no. GB927523612
    >
    >
    >
    

Reply via email to