Re store API: Maybe classes like `Stores` need to be modified, so I agree
it's safer to maintain it as Evolving.



Guozhang


On Tue, May 16, 2017 at 3:57 PM, Matthias J. Sax <matth...@confluent.io>
wrote:

> About Windows:
>
> We got the request to add TimeWindows etc to public API anyway. I guess
> it's helpful for people adding their own window aggregates using
> low-level API.
>
> But as mentioned already, it was just a thought, and I am also not 100%
> sure if we would gain much by changing the return type. Thus, if we
> don't see any advantage, we can just keep it as is.
>
>
> Same for stores: if you think the store API is stable, we don't need
> @Envolving -- we just got couple of KIPs about store API lately, so I
> wanted to double check only :)
>
>
> -Matthias
>
> On 5/16/17 3:49 PM, Guozhang Wang wrote:
> > Hello Matthias,
> >
> > Reply inlined.
> >
> > On Sat, May 13, 2017 at 1:40 PM, Matthias J. Sax <matth...@confluent.io>
> > wrote:
> >
> >> +1 for the overall proposal.
> >>
> >> Some comments:
> >>
> >> Currently, `Windowed#window()` returns type `Window` and I am wondering
> >> if we should improve type safety here and return the actual window type
> >> (ie, TimeWindow, SessionWindow, JoinWindow) etc.
> >>
> >> If this would be a useful improvement (frankly speaking, I am not 100%
> >> sure if we need this), we should mark `Windowed` as @evolving, too.
> >>
> >>
> > Hmm, I'm not sure, since TimeWindow / etc are internal classes. If we
> want
> > to expose them I need to expose all these internal classes as part of the
> > public APIs. But these internal classes do not expose any more functions
> > for users to call either.
> >
> >
> >>
> >> I am also no 100% sure about package `state` (or did you mean "top level
> >> package "o.a.k.streams" as you mention "StreamsMetric" in the same
> >> paragraph) -- are we sure it's stable enough to remove the annotation?
> >> Or should we use @evolving here, too?
> >>
> >>
> > Which class are you mostly concerning about?
> >
> >
> >> With KIP-120 in the pipeline, we should also add @evolving to
> >> KafkaStreams IMHO.
> >>
> >>
> > Yeah I forgot to mention that for the top-level classes  should be
> > @evolving, including StreamsMetrics (I was wrong in the previous email,
> it
> > is not in `o.a.k.streams.state`)
> >
> >
> >>
> >> -Matthias
> >>
> >> On 5/11/17 3:48 AM, Eno Thereska wrote:
> >>> Sounds reasonable.
> >>>
> >>> Thanks,
> >>> Eno
> >>>> On May 11, 2017, at 7:39 AM, Ismael Juma <ism...@juma.me.uk> wrote:
> >>>>
> >>>> Thanks for the proposal Guozhang. This sounds good to me.
> >>>>
> >>>> Ismael
> >>>>
> >>>> On Thu, May 11, 2017 at 6:02 AM, Guozhang Wang <wangg...@gmail.com>
> >> wrote:
> >>>>
> >>>>> Hello folks,
> >>>>>
> >>>>> As we are approaching the feature freeze deadline of 0.11.0.0, one
> >> thing I
> >>>>> realized is that currently the Streams public APIs are still marked
> as
> >>>>> "Unstable", which is to indicate that the API itself does not provide
> >>>>> guarantees about backward compatibility across releases. On the other
> >> hand,
> >>>>> since Streams have now been widely adopted in production use cases by
> >> many
> >>>>> organizations, we are in fact evolving its APIs in a much stricter
> >> manner
> >>>>> than "Unstable" allows us: for all the current Streams related KIP
> >>>>> proposals under discussions right now [1], people have been working
> >> hard to
> >>>>> make sure none of them are going to break backward compatibility in
> the
> >>>>> coming releases. So I think it would be a good timing to change the
> >> Streams
> >>>>> API annotations.
> >>>>>
> >>>>> My proposal would be the following:
> >>>>>
> >>>>> 1. For "o.a.k.streams.errors" and "o.a.k.streams.state" packages:
> >> remove
> >>>>> the annotations except `StreamsMetrics`.
> >>>>>
> >>>>> 2. For "o.a.k.streams.kstream": remove the annotations except
> >> "KStream",
> >>>>> "KTable", "GroupedKStream", "GroupedKTable", "GlobalKTable" and
> >>>>> "KStreamBuilder".
> >>>>>
> >>>>> 3. For all the other public classes, including
> >> "o.a.k.streams.processor"
> >>>>> and the above mentioned classes, change the annotation to "Evolving",
> >> which
> >>>>> means "we might break compatibility at minor releases (i.e. 0.12.x,
> >> 0.13.x,
> >>>>> 1.0.x etc) only".
> >>>>>
> >>>>>
> >>>>> The ultimate goal is to make sure we won't break anything going
> >> forward,
> >>>>> hence in the future we should remove all the annotations to make that
> >>>>> clear. The above changes in 0.11.0.0 is to give us some "buffer time"
> >> in
> >>>>> case there are some major API change proposals after the release.
> >>>>>
> >>>>> Would love to hear your thoughts.
> >>>>>
> >>>>>
> >>>>> [1]
> >>>>>
> >>>>> KIP-95: Incremental Batch Processing for Kafka Streams
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>> 95%3A+Incremental+Batch+Processing+for+Kafka+Streams>
> >>>>>
> >>>>> KIP-120: Cleanup Kafka Streams builder API
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>> 120%3A+Cleanup+Kafka+Streams+builder+API>
> >>>>>
> >>>>> KIP-123: Allow per stream/table timestamp extractor
> >>>>> <https://cwiki.apache.org/confluence/pages/viewpage.
> >> action?pageId=68714788
> >>>>>>
> >>>>>
> >>>>> KIP 130: Expose states of active tasks to KafkaStreams public API
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+
> >>>>> 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API>
> >>>>>
> >>>>> KIP-132: Augment KStream.print to allow extra parameters in the
> printed
> >>>>> string
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>> 132+-+Augment+KStream.print+to+allow+extra+parameters+in+
> >>>>> the+printed+string>
> >>>>>
> >>>>> KIP-138: Change punctuate semantics
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>> 138%3A+Change+punctuate+semantics>
> >>>>>
> >>>>> KIP-147: Add missing type parameters to StateStoreSupplier factories
> >> and
> >>>>> KGroupedStream/Table methods
> >>>>> <https://cwiki.apache.org/confluence/pages/viewpage.
> >> action?pageId=69408481
> >>>>>>
> >>>>>
> >>>>> KIP-149: Enabling key access in ValueTransformer, ValueMapper, and
> >>>>> ValueJoiner
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>> 149%3A+Enabling+key+access+in+ValueTransformer%2C+
> ValueMapper%2C+and+
> >>>>> ValueJoiner#KIP-149:EnablingkeyaccessinValueTransformer,ValueMapper,
> >>>>> andValueJoiner-RejectedAlternatives>
> >>>>>
> >>>>> KIP-150 - Kafka-Streams Cogroup
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>> 150+-+Kafka-Streams+Cogroup>
> >>>>>
> >>>>> KIP 155 - Add range scan for windowed state stores
> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+
> >>>>> 155+-+Add+range+scan+for+windowed+state+stores>
> >>>>>
> >>>>> KIP 156 Add option "dry run" to Streams application reset tool
> >>>>> <https://cwiki.apache.org/confluence/pages/viewpage.
> >> action?pageId=69410150
> >>>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> -- Guozhang
> >>>>>
> >>>
> >>
> >>
> >
> >
>
>


-- 
-- Guozhang

Reply via email to